Comandos Git - Guía básica para todos los desarrolladores
- 📖 9 Min. de lectura
Estos son sólo algunos comandos básicos que te pueden ayudar a aclarar tus dudas respecto al funcionamiento de los comandos de git, si vas comenzando a usarlo este post seguro que te ayudará, no te hago más el cuento largo y sin más te dejo con la guía.
Introducción a Git
Versión
Conjunto de nuevas características y funcionalidades de un software disponibles para el usuario final.
Sistema de control de versiones
Herramienta para el manejo de las diferentes versiones de software.
Repositorio
Es una caja de almacenamiento donde se va guardar todo el proceso del desarrollo del software.
Instalación de Git
- Debian →
sudo apt install git
- CentOS →
sudo yum install git
- MacOS →
brew install git
o' descargar el instalador - Windows → Descargar el instalador
Configuracion local
git config —-help
muestra la ayuda de lo que podemos hacer con el comandoconfig
git config —global user.name="<tu_nombre>"
establece el nombre que usaremos de forma globalgit config —global user.email="<tu_correo>"
establece el correo que usaremos de forma globalgit config —list
muestra los valores que tenemos actualmente en nuestra configuración global
Comandos básicos de Git
git help
muestra una lista con los comandos más utilizados en GITgit init
podemos ejecutar ese comando para crear localmente un repositorio con GIT y así utilizar todo el funcionamiento que GIT ofrece, basta con estar ubicados dentro de la carpeta donde tenemos nuestro proyecto y ejecutar el comandogit add ruta
agrega al repositorio los archivos que indiquemosgit add -A
agrega al repositorio todos los archivos y carpetas que estén en nuestro proyecto, los cuales GIT no está siguiendogit add .
agrega los archivos del directorio donde estoy ubicado en la terminalgit commit -m "mensaje" + archivos
crea la confirmación con un mensaje de los archivos que le indiquemos de esta manera quedan guardadas nuestras modificacionesgit restore --staged <nombre_archivo>
quita archivos del staging area después de haber sido agregadas.git commit -m "mensaje"
rea la confirmación con un mensaje de los archivos que han sido modificados y que tenemos en el staging areagit checkout -b <nombre_branch>
crea un nuevo branch o rama y automáticamente Git se cambia al branch creado, clonando el branch desde donde ejecutamos el comandogit branch
nos muestra una lista de los branches que existen en nuestro repositoriogit checkout <nombre_branch>
sirve para moverse entre branches, en este caso vamos al branch que indicamos en el comandogit merge <nombre_branch>
realiza un merge entre dos ramas, en este caso la dirección del merge sería entre el branch que indiquemos en el comando, y el branch donde estemos ubicadosgit status
nos indica el estado del repositorio, por ejemplo, cuales están modificados, cuales no están siendo seguidos por Git, entre otras característicasgit clone URL/name.git NombreProyecto
clona un proyecto de Git en la carpeta NombreProyectogit push origin NombreDeBranch
luego de que hicimos un git commit, si estamos trabajando remotamente, este comando va a subir los archivos al repositorio remoto, específicamente al branch que indiquemosgit pull origin NombreDeBranch
hace una actualización en nuestro branch local, desde un branch remoto que indicamos en el comandogit remote -v
muestra el nombre de los origenes remotos que tenemos en el repositorio actualgit diff <nombre_archivo>
devuelve los cambios que realizamos en un archivogit diff --stat <nombre_archivo>
generar un resumen condensado de información de las creaciones o eliminaciones en un archivogit diff --numstat <nombre_archivo>
__ similar a--stat
** , pero muestra el número de líneas agregadas y eliminadas en notación decimal y el nombre de la ruta sin abreviatura
Otros Métodos Para Reescribir el Historial
Existe un comando que si de pronto se nos pasó agregar unos cambios al último commit nos permite agregarlos esto solo si hemos subido los cambios del commit al servidor, para ello ejecutamos el siguiente comando.
git commit --amend -m "Un mensaje actualizado"
Por otro lado, si queremos agregar archivos sin modificar el mensaje añadimos los archivos y después ejecutamos el siguiente comando.
git commit --amend --no-edit
Tags y versiones en Git y GitHub
Git permite etiquetar puntos específicos del historial como importantes. Los tags sirven cuando necesitamos marcar un punto especifíco en la historia de nuestro trabajo(para los releases). De esta forma podemos hacer seguimiento al progreso de nuestro proyecto e identificar los cambios más fácilmente entre cada versión, incluso podemos hacer un checkout a uno de esos tags.
Crear un tag
git tag -a nombre-tag -m "mensaje" HASH-a-etiquetar
Si se omite el HASH, el tag se referencia al commit actual.
Ver lista de tags
git tag -l
comando para ver la lista de tags creados.
Ver detalle del tag
git show nombre-tag
Comando para ver la información de la etiqueta junto con el commit que está etiquetado.
Ver referencias
git show-ref --tags
Comando para ver el hash al que hace referencia cada tag.
Enviar tags a GitHub
git push origin --tags
Este comando envía los tags creados a GitHub, aunque no aparezcan en el staging area en espera de ser enviados estos se envían con este comando.*
Eliminar un tag localmente
git tag -d nombre-del-tag
Elimina el tag en la lista pero se mantiene en GitHub.*
Eliminar un tag en GitHub
git push origin:refs/tags/nombre-del-tag
Comando para eliminar un tag y su referencia en el repositorio remoto, de esta forma nos aseguramos de borrarlo de la lista de tags de GitHub.
Multiples entornos de trabajo
Git Rebase: reorganizando el trabajo realizado
Solo se usa para unir cambios en local (nunca lo uses en ramas remotas).
Primero haz un git rebase
primero al branch en la que hiciste cambios y quieres después unir y al final hacer git rebase estando dentro del branch que si vas a conservar.
git checkout rama3
git rebase
git checkout rama 2
git rebase
Git Stash: Guardar cambios en memoria y recuperarlos después
Cuando necesitamos regresar en el tiempo porque borramos alguna línea de código pero no queremos pasarnos a otra rama, porque nos daría un error ya que debemos pasar ese "mal cambio" que hicimos a stage, podemos usar git stash
para regresar el cambio anterior que hicimos.
git stash es típico usarlo cuando necesitamos cambios que no merecen una rama o no merecen un rebase si no simplemente estamos probando algo y luego quieres volver rápidamente a tu versión anterior la cual es la correcta.
git stash
crea el stash identificandolo con el nombre del último commitgit stash save "<mensaje identificador para el stash>"
crear el stash identificandolo con el nombre que le indiquemosgit stash list
lista elementos del stashgit stash pop
sirve para recuperar los elementosgit stash branch <nombre_rama>
crear una rama con el stash que guardamos usamosgit stash drop o' git stash drop stash@{<number_stash>}
eliminar elementos del stash usamosgit stash clear
eliminar todos los elementos del stash
Git Clean: limpiar tu proyecto de archivos no deseados
git clean --dry-run
para saber qué archivos vamos a borrargit clean -f
para borrar todos los archivos listados (que no son carpetas)git clean -df
para borrar todos los archivos y carpetas
Los archivos que no son trackeados por el
.gitignore
no serán eliminados por el comando git clean
Git cherry-pick: traer commits viejos al head de un branch
Esté comando permite tomar uno o varios commits de otra rama sin tener que hacer un merge completo, para eso utilizamos el comando git cherry-pick <Id Commit>
.
cherry-pick
es una mala práctica porque significa que estamos reconstruyendo la historia, usacherry-pick
con sabiduría. Si no sabes lo que estás haciendo ten mucho cuidado.
Comandos de Git para casos de emergencia
Git Reset y Reflog: úsese en caso de emergencia
¿Qué pasa cuando todo se rompe y no sabemos qué está pasando? Con git reset <HashDelHEAD>
nos regresamos al estado en que el proyecto funcionaba.
git reset --soft <HashDelHEAD>
te mantiene lo que tengas en staging ahígit reset --hard <HashDelHEAD>
resetea absolutamente todo incluyendo lo que tengas en staginggit reset
es una mala práctica, no deberías usarlo en ningún momento; debe ser nuestro último recursogit reflog
te permite visualizar como has modificado la historia incluso si lo has borrado; git nunca olvida
Buscar en archivos y commits de Git con Grep y Log
A medida que nuestro proyecto se hace grande vamos a querer buscar ciertas cosas.
Por ejemplo: ¿cuántas veces en nuestro proyecto utilizamos la palabra color?
git grep
lo usamos en los archivos
git grep <palabra_a_buscar>
indica en donde se uso la palabragit grep -n <palabra_a_buscar
indica en que linea se usa la palabragit grep -c <palabra_a_buscar>
indica cuantas veces se uso la palabra
git log
los usamos para los commits
git log -S "<palabra a buscar>"
indica en donde se uso la palabra dentro de los mensajes de los commitsgit log --all--oneline | grep "<palabra_a_buscar"
muestra los commits en donde se encuentra la palabra
Comandos y recursos colaborativos en Git y GitHub
git shortlog
para ver cuantos commits han hecho los miembros del equipogit shortlog -sn
muestra las personas que han hecho commitsgit shortlog -sn --all
muestra cuantos commits ha hecho cada miembro del equipo incluyendo los que han sido eliminadosgit shortlog -sn --all --no-merge
excluye los commits eliminados sin los mergesgit config --global alias.stats "shortlog -sn --all --no-merges"
configura un alias llamado statsgit blame -c <nombre_archivo>
muestra quién ha hecho cambios en el archivogit blame --help
muestra la ayuda del comando que le indiquesgit blame <nombre_archivo> -L 35, 60
muestra quién modifico las líneas que le indicamosgit branch -r
muestra las ramas remotasgit branch -a
muestra todas las ramas locales y remotas
Conclusión
Estos han sido algunos de los principales comandos que debes saber si quieres comenzar a usar git o si de pronto quisieras buscar una referencia rápida de para que sirve algún comando, claro que recomiendo siempre ir a la documentación. Espero te ayude está pequeña guía y nos leemos en la proxima.