Ir al contenido
  1. Blog/

Guía rápida de Git: Comandos esenciales y avanzados

·6 mins
Git

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. gloggit 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 ignorando si hay cambios e incompatibilidades. Solo usar cuando estás seguro de lo que haces.
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.
Gerardo Catalas
Autor
Gerardo Catalas
Apasionado por el desarrollo de software, especialmente backend. Actualmente profundizo mis conocimientos en Python y bases de datos SQL mediante proyectos prácticos.