Guía rápida de Git: Comandos esenciales y avanzados
·6 mins
Tabla de contenido
Guía Rápida #
Básico (más usado) #
Comando | Descripción |
---|---|
git init <carpeta> |
Crea un repositorio vacío en <carpeta> . Sin argumentos permite inicializar la carpeta actual como un repositorio. |
git clone <repositorio> |
Clona un <repositorio> en nuestra máquina local. El <repositorio> puede ser local o remoto mediante HTTP o SSH. |
git config user.name <autor> |
Define al <autor> para todas las confirmaciones en el repositorio actual. |
git add <carpeta/archivo> |
Agrega los cambios realizados en dicha `<carpeta |
git commit -m "<mensaje>" |
Confirma los cambios en esa instancia, pero sin abrir o usar un editor de texto, usa el <mensaje> como mensaje de confirmación. |
git status |
Muestra la lista de archivos de los cambios montados, no montados y sin seguimiento. |
git log |
Muestra el historial de confirmaciones (formato por defecto). Para personalizar ver la sección de opciones adicionales. |
git diff |
Muestra los cambios no marcados entre el índice y la carpeta de trabajo. |
git stash |
Guarda temporalmente los cambios no confirmados (staging y sin staging). |
git reset |
Quita archivos del área de staging sin perder los cambios. |
git rm <archivo> |
Elimina un <archivo> del repositorio y del disco. |
git mv <archivo-antiguo> <archivo-nuevo> |
Renombra o mueve un archivo. |
git tag <nombre> |
Crea una etiqueta ligera en la confirmación actual. |
git show |
Muestra detalles de objetos Git como commits, tags, archivos. |
Reescribiendo el historial #
Comando | Descripción |
---|---|
git commit --amend |
Reemplaza la última confirmación y/o cambios montados. Usarlo sin cambios montados edita el mensaje de la última confirmación. |
git rebase <base> |
Reaplica los commits desde una nueva base <base> reorganizando el historial. Se usa para mantener una historia más lineal y clara. |
git reflog |
Muestra un log de los cambios en el HEAD del repositorio local. Agrega --relative-date para mostrar la fecha o --all para todos. |
Ramas #
Comando | Descripción |
---|---|
git branch <rama> |
Crea una nueva <rama> . Sin argumentos muestra la lista de ramas del repositorio. |
git checkout -b <rama> |
Crea una nueva <rama> en base a la rama actual. Si quitamos -b permite posicionarse en la <rama> . |
git checkout <rama> |
Permite posicionarse en la rama <rama> . |
git switch <rama> |
Permite posicionarse en la rama <rama> . Más intuitivo que git checkout para cambiar ramas. |
git switch -c <rama> |
Crea una nueva <rama> y se posiciona en ella. Equivalente a git checkout -b <rama> . |
git merge <rama> |
Mezcla la <rama> con la rama actual. |
Repositorios remotos #
Comando | Descripción |
---|---|
git remote add <nombre> <enlace> |
Crea una nueva conexión a un repositorio remoto. El <nombre> es el alias del <enlace> al cual se comunica. |
git fetch <remoto> <rama> |
Obtiene la <rama> del repositorio <remoto> . Si no se especifica la rama trae todas las ramas. |
git pull <remoto> <rama> |
Obtiene una copia del repositorio <remoto> y la mezcla al instante con el repositorio local. |
git push <remoto> <rama> |
Envía la <rama> al repositorio <remoto> actualizándola si existe y sino creándola. |
Opciones adicionales #
git config #
Comando | Descripción |
---|---|
git config --global user.name <autor> |
Define el nombre del <autor> de todas las confirmaciones para el usuario actual. |
git config --global user.email <correo> |
Define el <correo> del autor de todas las confirmaciones para el usuario actual. |
git config --global alias.<alias> <comando> |
Crea un atajo de <comando> en Git que se usa mediante el <alias> . Ejm. alias.glog log –graph equivalente. glog ⇒ git log --graph . |
git config --system core.editor <editor> |
Define el <editor> usado por los comandos para todos los usuarios. Por ejemplo <editor> puede ser vim. |
git config --global --edit |
Abre el archivo de configuración global para que pueda ser editado manualmente. Usa el editor por defecto de la máquina. Ejm. nano . |
git log #
Comando | Descripción |
---|---|
git log -<límite> |
Limita el número de logs usando el <límite> . Ejemplo: git log -5 muestra los últimos 5 logs. |
git log --online |
Condensa cada una de las confirmaciones a una sola línea. |
git log -p |
Muestra todos los cambios de cada confirmación. |
git log --stat |
Incluye qué archivos se modificaron y el número relativo de líneas que fueron añadidas o borradas de cada uno de ellos. |
git log --author="<autor>" |
Busca las confirmaciones por un <autor> en particular. |
git log --grep="<patron>" |
Busca confirmaciones cuyo mensaje de confirmación coincida con el <patron> asignado. |
git log <desde>..<hasta> |
Muestra las confirmaciones entre <desde> y <hasta> . Se puede usar hash de confirmación, rama, HEAD o cualquier punto de revisión. |
git log -- <archivo> |
Muestra solo las confirmaciones del <archivo> especificado. |
git log --graph --decorate |
El --graph muestra un gráfico en texto al lado izquierdo de los mensajes de confirmación y --decorate el nombre de la rama o tag. |
git diff #
Comando | Descripción |
---|---|
git diff HEAD |
Muestra diferencias de la ult. confirmación y la carpeta trabajo. |
git diff --cached |
Muestra diferencias de la ult. confirmación y los cambios marcados. |
git reset #
Comando | Descripción |
---|---|
git reset |
Reinicia el área de marcado para coincidir con la última confirmación, pero deja la carpeta de trabajo sin cambios. |
git reset --hard |
Reinicia el área de marcado y carpeta de trabajo para coincidir con la última confirmación, sobreescribiendo todos los cambios. |
git reset <confirmación> |
Mueve la rama actual hacia la <confirmación> reiniciando el área de marcado, pero deja la carpeta de trabajo. |
git reset --hard <confirmación> |
Lo mismo que git reset --hard pero todos los cambios no confirmados y todas las confirmaciones después de la <confirmación> . |
git rebase #
Comando | Descripción |
---|---|
git rebase -i <base> |
Un rebase interactivo que abre un editor para ingresar los comandos para cada confirmación que será transferida a la nueva <base> . |
Deshacer cambios #
Comando | Descripción |
---|---|
git checkout -- <archivo> |
Descarta los cambios locales en <archivo> , dejándolo como en el último commit. |
git restore <archivo> |
Nueva forma recomendada para descartar cambios en un archivo. |
git reset HEAD <archivo> |
Quita <archivo> del área de staging pero conserva los cambios en el directorio de trabajo. |
git revert <commit> |
Crea un nuevo commit que revierte los cambios introducidos por <commit> . |
git clean -f |
Elimina archivos sin seguimiento en el directorio de trabajo (útil para limpiar archivos basura). |
git stash #
Comando | Descripción |
---|---|
git stash |
Guarda temporalmente cambios no confirmados y limpia el área de trabajo. |
git stash pop |
Restaura el último stash y lo elimina de la lista. |
git stash apply |
Restaura el último stash sin eliminarlo. |
git stash list |
Muestra una lista de todos los cambios guardados con stash. |
git stash drop |
Elimina el stash más reciente (o uno especificado). |
git pull #
Comando | Descripción |
---|---|
git pull --rebase <remoto> |
Obtiene una copia de <remoto> de la rama actual pero en vez de realizar una mezcla realiza un rebase de las ramas. |
git push #
Comando | Descripción |
---|---|
git push --force |
Fuerza a Git a enviar la rama al |
git push --all <remoto> |
Envía todas las ramas del repositorio local al repositorio <remoto> . |
git push --tags <remoto> |
Las etiquetas no son enviadas automáticamente por lo que es necesario usar --tags para enviarlas al repositorio <remoto> . |
Etiquetas (git tag) #
Comando | Descripción |
---|---|
git tag |
Lista todas las etiquetas existentes. |
git tag <nombre> |
Crea una etiqueta ligera en la confirmación actual. |
git tag -a <nombre> -m "<mensaje>" |
Crea una etiqueta anotada con un mensaje. |
git show <tag> |
Muestra información detallada sobre una etiqueta. |
git push <remoto> <tag> |
Envía la etiqueta al repositorio remoto. |
git rm y git mv #
Comando | Descripción |
---|---|
git rm <archivo> |
Elimina el archivo del repositorio y del disco. |
git rm --cached <archivo> |
Elimina el archivo del área de staging pero lo deja en el disco. |
git mv <archivo-antiguo> <archivo-nuevo> |
Mueve o renombra archivos. |