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.
Para poder movernos entre carpetas
Ahora podemos crear un repositorio directo en nuestro PC:
Con init crearemos un repositorio, y debemos definir la rama principal como main.
Para configurar el repositorio:
Podremos ver nuestras configuraciones con:
2. Comandos de movimiento de un repositorio
Add: Este comando agrega y prepara la actualización del repositorio.
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.
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:
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.
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.
Push: este comando enviara todo lo preparado al repositorio (si no hay ningún error).
Pull: este por el contrario, actualizara tu copia del repositorio.
Clone: sirve para copiar un repositorio, propio o no. Si no es propio, es bueno hacer primero fork en el repositorio remoto (github).
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.
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.
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.
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í:
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í:
La anterior es un ejemplo, dejamos los dos códigos para resolver el conflicto. O...
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.
Diff: muestra los cambios de un archivo según el repositorio, los compara y los muestra.
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:
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:
Este comando nos mostrara todo lo guardado anteriormente. Y entonces:
Lo anterior, hará que todo lo guardado regrese a la zona de trabajo.
Pero también podremos hacer cosas mas especificas:
Show: Mostrara información y/o metadatos sobre un elemento en especifico, como: un commit, un archivo de un commit, una rama, etc.
Tag: esto agrega una etiqueta la cual da algo mas de informacion, se puede usar para momentos importantes de un proyecto.
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.
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:
8. Uso de seguridad SSH
Esto nos dará una conexión única y segura con un repositorio remoto.
Primero el comando:
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:
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:
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: