Tutorial de Git

 En este articulo veremos el uso de comandos git


Git

Es un software para el control de versiones, eficiente. El cual usa por ejemplo una terminal para poder ejecutar comandos. 


1. Comandos primeros pasos

Usamos mkdir para crear una carpeta. Y rmdir para eliminar.

 
mkdir carpeta // Crear carpeta
rmdir carpeta // Eliminar carpeta

 

Para poder movernos entre carpetas

 
cd subcarpeta // Ir a una carpeta hija
cd .. // Para devolverse

 

Ahora podemos crear un repositorio directo en nuestro PC:

 
git init -b main // Definir rama principal
 

Con init crearemos un repositorio, y debemos definir la rama principal como main.


Para configurar el repositorio:


git config --global user.name "Tu nombre" // Para el nombre de usuario
git config --global user.email "correo@jemplo.co" // Para el correo
 

Podremos ver nuestras configuraciones con:

 
git config --list // Ver las configuraciones
 

 

2. Comandos de movimiento de un repositorio

Add: Este comando agrega y prepara la actualización del repositorio.

 
git add . // 1
git add ejemplo.jsx // 2
git add *.js // 3
git add src/hooks-* // 4
git add -u // 5
 

El primero es para agregar TODOS los cambios hechos. 

El segundo agrega un script en especifico. 

El tercero agrega todos los scripts con extensión js. 

El cuarto agrega los cambios en determinada posición.

El quinto agrega solo los cambios de archivos modificados o eliminados, pero no los nuevos.


Reset: este devuelve lo que agregamos para enviar al repositorio, para no enviarlo.


git reset --hard id_commit // Se devueve a un commit borrando todo
git reset --mixed id_commit // Devuelve el entorno de trabajo a ese commit
git reset --soft id_commit // Devuelve el entorno de trabajo a ese commit
 

El primero borra todo hasta el commit seleccionado. Debe ser la ultima opcion, ya que se perderá todo.

El segundo, es el default, y actualiza el entorno de trabajo a un commit anterior eliminando lo hecho en comandos add y commit, pero no borra otros commits.

El tercero, solo actualiza el entorno de trabajo a un commit anterior, sin perder nada.
 

Revert: crea un commit revirtiendo un cambio. Es decir, creamos un commit pero este contenido es de otro commit anterior:

 
git revert id_commit // Esto crea un commit nuevo revirtiendo los cambios
 
/-----/
Revert "mensaje del commit" por Alguien
This reverts commit id_commit
/-----/

Lo de abajo del comando es el mensaje que nos saldrá, entonces lo recomendable es editar el commit colocando quien lo hizo.


Commit: este coloca un id para lo que se va a agregar, con un comentario nuestro.


git commit -m 'Titulo | Se actualizo el componente ejemplo'
 

Algo recomendable es que los commits, deben ser cortos enfocados en que se hizo y porque.


Log: este comando nos ayudara a visualizar todos los commits hechos. Nos mostrara el SHA (id), el autor, la fecha, y el mensaje.


git log // Info completa
git log --oneline // Info resumida
git log -n 5 // Muestra los ultimos <5> commits
git log --oneline -n 5 // Mezcla de las dos anteriores
 


Push: este comando enviara todo lo preparado al repositorio (si no hay ningún error).


git push
 


Pull: este por el contrario, actualizara tu copia del repositorio.


git pull // Toma los cambios de la rama main
 


Clone: sirve para copiar un repositorio, propio o no. Si no es propio, es bueno hacer primero fork en el repositorio remoto (github).


git clone 'https://github.com/Usuario/RepoEjemplo'
 


3. Comandos de ramas

Las ramas son para tener versiones diferentes de un mismo proyecto, las ramas se crean, se mezclan y se eliminan. Siempre un proyecto tiene una rama 'main' que es la principal.

Ademas usar ramas es bueno para la organización, manejar cambios drásticos o experimentar por fuera.


Switch: con este comando podremos crear una nueva rama. Y también para movilizarnos entre ellas.


git switch -c NuevaRama // > Debe ser descriptivo <
git switch main
 

El primer comando es para crear. Y el segundo es para cambiar de rama.


Branch: nos ayuda a visualizar todas las ramas existentes. Y también podemos borrar ramas.


git branch // Ver ramas
git branch -D NuevaRama // Borrar rama
 

El primero es para observar todas las ramas existentes. La segunda es para borrar, pero antes de borrar una rama, tendremos que desplazarnos a otra. (Eliminarla es buena practica luego de hacer un merge)


Merge: el comando nos funciona para mezclar ramas, pero para ello debemos ir a la rama raíz y hacer la mezcla con la rama requerida.


git merge NuevaRama
 

4. Pull request

Es una forma de pedir permiso para hacer cambios, esto es bueno si queremos respetar el código y pedir una revisión.


Entonces en el repositorio remoto, github. En nuestra rama nueva, le damos a hacer pull-request dando una buena descripción.


 Esto hará una notificación al equipo y ellos lo revisaran y podrán hacer el merge.



5. Comandos para resolver conflictos

Primero el conflicto, se vera algo así: 

 
/--------
<<<<<< HEAD
Codigo1();
===========
CodigoNuevo();
>>>>>> OtraRama
/--------

Lo anterior muestra las lineas de código que están chocando o tienen un conflicto y git no sabe que hacer. Entonces nosotros editaremos ese código... Así:

 
/--------
Codigo1();
CodigoNuevo();
/--------
 

La anterior es un ejemplo, dejamos los dos códigos para resolver el conflicto. O...

 
/--------
CodigoNuevo(); // Este se queda
/--------
 

Podemos borrar una parte del código. Todo esto es para resolver el conflicto. 

Luego guardamos los cambios  hacemos el commit y push. Y luego hacer el merge.

 

6. Otros comandos útiles

Status: muestra mucha información sobre el estado de nuestro repositorio.


git status // Info completa
git status -s // Info mas corta
 


Diff: muestra los cambios de un archivo según el repositorio, los compara y los muestra.


git diff
 


Stash: hay una área donde podremos guardar cambios que no se verán reflejados en el repositorio, pero si estarán guardados, para ello hacemos:


git stash 
 

Con la ejecución del comando anterior, todo lo que no hemos guardado agregado al repositorio se guardara en el stash. Y entonces podemos ejecutar:


git stash list
 

Este comando nos mostrara todo lo guardado anteriormente. Y entonces:


git stash pop
 

Lo anterior, hará que todo lo guardado regrese a la zona de trabajo.

Pero también podremos hacer cosas mas especificas:


git stash save "StashEjemplo" // Para guardar con un nombre
git stash pop stash@{1} /* Devuelve los cambios de ese en 
especifico de la lista */
 


Show: Mostrara información y/o metadatos sobre un elemento en especifico, como: un commit, un archivo de un commit, una rama, etc.


git show <IdCommit> // _Info sobre un commit
git show <IdCommit> --archivoEjemplo.py // Info sobre el archivo
git show RamaEjemplo // Info sobre la rama
 


Tag: esto agrega una etiqueta la cual da algo mas de informacion, se puede usar para momentos importantes de un proyecto.

 
git tag -a tag_ejemplo -m "Mensaje importante"
git tag // Muestra la lista de los tags
git show tag_ejemplo // Muestra detalles del commit de ese tag
git tag -d tag_ejemplo // Elimina SOLO la etiqueta
git tag -v nuevo_tag // Cambiar la etiqueta
 

El primero agrega una tag al commit

el segundo muestra todos los tags existentes.

El tercero muestra el commit del tag elegido.

El cuarto elimina solo el tag, no el commit.

El quinto, cambie el tag.


Chekout: actualiza el entorno de trabajo al commit elegido, sin eliminar o cambiar la lista de commits.

 
git checkout id_commit // Para ver un commit
 


7. Archivo .gitignore

Muchas veces en nuestro trabajo, habrán archivos que no son necesarios guardar en el repositorio, para ello creamos en la raíz del proyecto un .gitignore; ejemplo:


src/hola.py // Ignorar ese archivo en especifico
*.js // Ignorar todos los archivos con esa extensión
node_modules/ // Ignorar esa carpeta

!src/styles/ejemplo.css // NO ignorar ese archivo
 


8. Uso de seguridad SSH

Esto nos dará una conexión única y segura con un repositorio remoto.

Primero el comando:

 
ssh-keygen -t ed25519 -C "T@correo.co"
 

Luego de eso, nos preguntara: nombre para guardar el archivo; por una contraseña.

Y aparecerá un mensaje de confirmación, con la dirección en el PC de donde esta el SSH publico y privado.


Ahora tenemos que agregarla para confirmar su uso:

 
ssh-add ubicacion/aqui // Agregar la llave
 

Nos pedirá la contraseña. Debemos dar la ubicación de la clave privada.


Debemos obtener el SSH publico (.pub) y copiarlo... Ahora en el repositorio remoto. En github: vamos a settings/SSH and GPG keys crear un nuevo SSH, un titulo, y la llave copiada. 

Y así podremos tener una conexión segura y única con un repositorio. Para comprobar en la carpeta del SSH:

 
ssh -T git@github.com
 

El comando nos preguntara si queremos conectarnos, diremos que 'yes' y estará listo si aparece un mensaje saludándonos.


9. Issues

En github, las personas pueden anunciar la existencia de errores. Nosotros podemos crear un formato para estos. En nuestro código: creamos las carpetas .github/ISSUE_TEMPLATE. Y podemos poner en un archivo bug_report.md:

---

name: "🐛 Bug Report"
about: "Reportar un error para ayudarnos a mejorar el proyecto."
title: "[BUG] - Descripción corta del error"
labels: bug
assignees: ""

---

## 🐛 Bug Report

### Descripción

Describe claramente el error que has encontrado. Incluye detalles sobre cómo se presenta el problema.

### Pasos para reproducir

1. Ir a '...'
2. Hacer clic en '...'
3. Describir cualquier otra acción hasta que ocurra el problema.
4. Error que aparece: '...'

### Comportamiento esperado

Describe lo que esperabas que ocurriera al realizar los pasos anteriores.

### Capturas de pantalla o registros

Si es posible, añade capturas de pantalla o registros de errores.

### Entorno

- Sistema operativo: [p. ej., Windows 10, macOS Catalina]
- Navegador y versión: [p. ej., Chrome 87, Safari 14]
- Versión del proyecto: [p. ej., 1.0.0]

### Información adicional

Cualquier otra información relevante.