Skip to content

Hoja de Referencia de Comandos Git

Git es un sistema de control de versiones distribuido de código abierto que puede manejar la gestión de versiones de proyectos desde muy pequeños hasta muy grandes de manera eficiente y a alta velocidad. Git es un software de control de versiones de código abierto desarrollado por Linus Torvalds para ayudar a gestionar el desarrollo del núcleo de Linux.

Conceptos Básicos de Git

git init <directory>

Crea un repositorio Git vacío en el directorio especificado. Si se ejecuta sin parámetros, inicializa el directorio actual como un 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 que se utilizará para todos los commits en el repositorio actual.

git add <directory>

Añade los cambios en <directory> para el próximo commit.

git commit -m "<message>"

Confirma la instantánea del área de preparación (staging area), utilizando <message> como mensaje de confirmación.

git status

Lista qué archivos están preparados, 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 (aún no añadido con git add) y el área de preparación (después de git add).

Deshacer Cambios

git revert <commit>

Crea un nuevo commit que deshace todos los cambios realizados en <commit> y lo 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 un archivo de preparación sin sobrescribir ningún cambio.

git clean -n

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

Reescribir el Historial

git commit --amend

Modifica el evento de commit de Git más reciente. Si el directorio de trabajo tiene cambios para confirmar, esos cambios también se confirmarán al usar el comando git commit –amend.

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 (incluidos los registros de commit eliminados y las operaciones de reset).

Ramas Git

git branch

Lista todas las ramas. Añada un parámetro <branch> para crear una nueva rama llamada <branch>.

git checkout -b <branch>

Crea y se mueve a una nueva rama llamada <branch>. Omita -b para moverse a 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ñadir el remoto, puede usar <name> como atajo para <url> en otros comandos.

git fetch <remote> <branch>

Obtiene todas las actualizaciones de la <rama> especificada desde el repositorio, pero no fusiona con la rama local.

git pull <remote>

Obtiene la copia remota especificada de la rama actual y la fusiona inmediatamente en 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, se crea una 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 del ordenador.

git config --global --edit

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

git log

git log -<limit>

Muestra los últimos <limit> registros del 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 y el diff completo de cada commit.

git log --stat

Muestra el historial de commits, incluyendo qué archivos fueron modificados 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 utilizando coincidencia de expresiones regulares.

git log <since>..<until>

Muestra los commits que ocurrieron entre <since> y <until>.

git log -- <file>

Muestra solo los registros de commit que contienen el archivo especificado.

git diff

git diff HEAD

Compara las diferencias entre el directorio de trabajo (aún no añadido con git add) y el repositorio (después de git commit).

git diff --cached

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

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 de vuelta a <commit> y restablece el área de preparación, pero no cambia el directorio de trabajo.

git reset --hard <commit>

Igual que el anterior, pero restablece tanto el área de preparación como 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 reescribe (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.