Skip to content

Hoja de referencia de comandos Git

Git es un sistema de control de versiones distribuido de código abierto, diseñado para manejar desde proyectos pequeños hasta muy grandes con rapidez y eficiencia. Git fue desarrollado por Linus Torvalds para ayudar a gestionar el desarrollo del kernel de Linux.

Conceptos básicos de Git

git init <directory>

Crea un repositorio Git vacío en el directorio especificado. Si se ejecuta sin argumentos, inicializa el directorio actual como repositorio Git.

git clone <repo>

Clona el repositorio ubicado en <repo> en la máquina local. El repositorio original puede estar en el sistema de archivos local o en una máquina remota a través de HTTP o SSH.

git config user.name <name>

Define el nombre del autor para todos los commits en el repositorio actual.

git add <directory>

Añade el contenido cambiado en <directory> para el próximo commit (staging).

git commit -m "<message>"

Hace un commit de la captura de la etapa (staging), usando <message> como mensaje del commit.

git status

Enumera qué archivos están en etapa de preparación (staged), no preparados y sin seguimiento.

git log

Muestra todo el historial de commits utilizando el formato predeterminado.

git diff

Compara las diferencias entre el directorio de trabajo y el área de preparación (staging area).

Deshacer cambios

git revert <commit>

Crea un nuevo commit que deshace todos los cambios realizados en <commit> y los aplica a la rama actual.

git reset <file>

Elimina <file> del área de preparación, pero mantiene el directorio de trabajo sin cambios. Esto quita el archivo del área de preparación sin sobrescribir los cambios.

git clean -n

Muestra qué archivos se eliminarán del directorio de trabajo. Use la bandera -f en lugar de -n para ejecutar la limpieza.

Reescribir el historial de Git

git commit --amend

Modifica el commit de Git más reciente. Si el directorio de trabajo tiene cambios pendientes, estos se incluirán en el commit modificado.

git rebase <base>

Restablece la rama actual a <base>. <base> puede ser un ID de commit, nombre de rama, etiqueta o HEAD.

git reflog

Permite ver todos los registros de operaciones de todas las ramas (incluyendo los registros de commits eliminados y operaciones de reset).

Ramas de Git

git branch

Enumera todas las ramas. Añada un argumento <branch> para crear una nueva rama llamada <branch>.

git checkout -b <branch>

Crea y activa una nueva rama llamada <branch>. Omita -b para activar una rama existente.

git merge <branch>

Fusiona la rama <branch> en la rama actual.

Repositorios remotos

git remote add <name> <url>

Añade un nuevo repositorio remoto. Después de añadirlo, puede usar <name> como atajo de <url> en otros comandos.

git fetch <remote> <branch>

Obtiene todas las actualizaciones para la <rama> especificada del repositorio, pero no las fusiona con la rama local.

git pull <remote>

Obtiene la copia remota especificada de la rama actual y la fusiona inmediatamente con la copia local.

git push <remote> <branch>

Envía la rama a <remote>, junto con los commits y objetos necesarios. Si el repositorio remoto no existe, crea la rama con nombre en el repositorio remoto.

git config

git config --global user.name <name>

Define el nombre del autor para todos los commits del usuario actual.

git config --global user.email <email>

Define el correo electrónico del autor para todos los commits del usuario actual.

git config --global alias.<alias-name> <git-command>

Crea un atajo (alias) para un comando de Git.

git config --system core.editor <editor>

Establece el editor de texto utilizado por los comandos para todos los usuarios de la computadora.

git config --global --edit

Abre el archivo de configuración global en un editor de texto para edición manual.

git log

git log -<limit>

Muestra la cantidad de <limit> registros de historial de commits.

git log --oneline

Muestra el historial de commits comprimiendo cada commit en una sola línea.

git log -p

Muestra el historial de commits con la diferencia completa de cada commit.

git log --stat

Muestra el historial de commits, incluyendo qué archivos se modificaron y el número relativo de líneas añadidas o eliminadas de cada archivo.

git log --author="<pattern>"

Busca commits de un autor específico.

git log --grep="<pattern>"

Busca en el historial de commits mediante coincidencias de expresiones regulares (regex).

git log <since>..<until>

Muestra los commits ocurridos entre <since> y <until>.

git log -- <file>

Solo muestra los registros de commit que incluyen el archivo especificado.

git diff

git diff HEAD

Compara las diferencias de archivos entre el directorio de trabajo y el repositorio (después de git commit).

git diff --cached

Compara las diferencias de archivos entre el área de preparación (después de git add) y el repositorio.

git reset

git reset

Restablece el área de preparación para que coincida con el commit más reciente, pero mantiene el directorio de trabajo sin cambios.

git reset --hard

Restablece tanto el área de preparación como el directorio de trabajo al commit más reciente, sobrescribiendo todos los cambios en el directorio de trabajo.

git reset <commit>

Mueve el puntero de la rama actual hacia atrás hasta <commit> y restablece el área de preparación, pero sin cambiar el directorio de trabajo.

git reset --hard <commit>

Igual que el anterior, pero restablece el área de preparación y el directorio de trabajo. Elimina los cambios no confirmados y todos los commits posteriores a <commit>.

git pull

git pull --rebase <remote>

Obtiene la copia remota de la rama actual y la restablece (rebase) sobre la copia local. Utiliza git rebase en lugar de merge para integrar ramas.

git push

git push <remote> --force

Empuje forzado (force push).

git push <remote> --all

Envía todas las ramas locales al remoto especificado.

git push <remote> --tags

Envía todas las etiquetas locales al repositorio remoto.