Comandos Git - Guía básica para todos los desarrolladores
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
Cent OS →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 comando config
git config —global user.name\="<tu_nombre>" establece el nombre que usaremos de forma global
git config —global user.email\="<tu_correo>" establece el correo que usaremos de forma global
git 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 GIT
git 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 comando
git add ruta agrega al repositorio los archivos que indiquemos
git add -A agrega al repositorio todos los archivos y carpetas que estén en nuestro proyecto, los cuales GIT no está siguiendo
git add . agrega los archivos del directorio donde estoy ubicado en la terminal
git commit -m "mensaje" + archivos crea la confirmación con un mensaje de los archivos que le indiquemos de esta manera quedan guardadas nuestras modificaciones
git 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 area
git 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 comando
git branch nos muestra una lista de los branches que existen en nuestro repositorio
git checkout <nombre_branch> sirve para moverse entre branches, en este caso vamos al branch que indicamos en el comando
git 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 ubicados
git status nos indica el estado del repositorio, por ejemplo, cuales están modificados, cuales no están siendo seguidos por Git, entre otras características
git clone URL/name.git NombreProyecto clona un proyecto de Git en la carpeta NombreProyecto
git 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 indiquemos
git pull origin NombreDeBranch hace una actualización en nuestro branch local, desde un branch remoto que indicamos en el comando
git remote -v muestra el nombre de los origenes remotos que tenemos en el repositorio actual
git diff <nombre_archivo> devuelve los cambios que realizamos en un archivo
git diff --stat <nombre_archivo> generar un resumen condensado de información de las creaciones o eliminaciones en un archivo
git 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 etiqueta un 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 commit
git stash save "<mensaje identificador para el stash>" crear el stash identificandolo con el nombre que le indiquemos
git stash list lista elementos del stash
git stash pop sirve para recuperar los elementos
git stash branch <nombre_rama> crear una rama con el stash que guardamos usamos
git stash drop o' git stash drop stash@{<number_stash>} eliminar elementos del stash usamos
git 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 borrar
git 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, usa cherry-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 staging
git reset es una mala práctica, no deberías usarlo en ningún momento; debe ser nuestro último recurso
git 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 palabra
git grep -n <palabra_a_buscar indica en que linea se usa la palabra
git 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 commits
git 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 equipo
git shortlog -sn muestra las personas que han hecho commits
git shortlog -sn --all muestra cuantos commits ha hecho cada miembro del equipo incluyendo los que han sido eliminados
git shortlog -sn --all --no-merge excluye los commits eliminados sin los merges
git config --global alias.stats "shortlog -sn --all --no-merges" configura un alias llamado stats
git blame -c <nombre_archivo> muestra quién ha hecho cambios en el archivo
git blame --help muestra la ayuda del comando que le indiques
git blame <nombre_archivo> -L 35, 60 muestra quién modifico las líneas que le indicamos
git branch -r muestra las ramas remotas
git 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.