Hoja de referencia de Git

Comandos esenciales de Git para control de versiones: ramificación, confirmación, fusión y colaboración.

Configuración e instalación

Configura Git y establece tu identidad

# Establece tu nombre y correo electrónico
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

# Verifica tu configuración
git config --list

# Define el nombre de la rama predeterminada
git config --global init.defaultBranch main
Configuración inicial
# Establece el editor predeterminado
git config --global core.editor "code --wait"

# Habilita la salida con colores
git config --global color.ui auto

# Configura el asistente de credenciales (Windows)
git config --global credential.helper wincred
Configuración adicional

Creación de repositorios

Inicializa o clona repositorios Git

# Inicializa un nuevo repositorio
git init

# Inicializa con un nombre de rama específico
git init -b main

# Clona un repositorio existente
git clone https://github.com/user/repo.git

# Clona en un directorio específico
git clone https://github.com/user/repo.git my-folder
Inicialización del repositorio

Flujo de trabajo básico

Comandos comunes para el uso diario de Git

# Verifica el estado del repositorio
git status

# Añade archivos al área de preparación
git add file.txt
git add .                 # Añade todos los archivos
git add *.js              # Añade todos los archivos JavaScript

# Confirma los cambios
git commit -m "Commit message"
git commit -am "Message"  # Añade y confirma archivos rastreados

# Muestra el historial de confirmaciones
git log
git log --oneline         # Vista compacta
git log --graph           # Muestra el gráfico de ramas
Comandos diarios

Ramas y fusiones

Crea y gestiona ramas

# Lista las ramas
git branch                # Ramas locales
git branch -a             # Todas las ramas (locales + remotas)

# Crea una nueva rama
git branch feature-branch

# Cambia a una rama
git checkout feature-branch
git switch feature-branch  # Alternativa moderna

# Crea y cambia a una nueva rama
git checkout -b feature-branch
git switch -c feature-branch
Gestión de ramas
# Fusiona una rama en la rama actual
git merge feature-branch

# Elimina una rama
git branch -d feature-branch    # Eliminación segura
git branch -D feature-branch    # Eliminación forzada

# Renombra una rama
git branch -m old-name new-name
Fusión y limpieza

Repositorios remotos

Trabaja con repositorios remotos

# Lista los repositorios remotos
git remote -v

# Añade un repositorio remoto
git remote add origin https://github.com/user/repo.git

# Obtén cambios del remoto
git fetch origin

# Extrae cambios del remoto
git pull origin main

# Envía cambios al remoto
git push origin main
git push -u origin main   # Define upstream y envía
Operaciones remotas
# Elimina un remoto
git remote remove origin

# Renombra un remoto
git remote rename old-name new-name

# Cambia la URL del remoto
git remote set-url origin https://github.com/user/new-repo.git
Gestión de remotos

Deshacer cambios

Revertir o restablecer cambios

# Descarta cambios en el directorio de trabajo
git restore file.txt
git checkout -- file.txt  # Método antiguo

# Desprepara archivos
git restore --staged file.txt
git reset HEAD file.txt   # Método antiguo

# Modifica la última confirmación
git commit --amend -m "New message"

# Revierte una confirmación (crea una nueva confirmación)
git revert <commit-hash>
Operaciones de deshacer
# Restablece al commit anterior (¡cuidado!)
git reset --soft HEAD~1   # Mantiene los cambios preparados
git reset --mixed HEAD~1  # Mantiene los cambios sin preparar
git reset --hard HEAD~1   # Descarta todos los cambios

# Restablece a un commit específico
git reset --hard <commit-hash>
Operaciones de restablecimiento

Almacenamiento temporal

Guarda cambios temporalmente

# Almacena los cambios actuales
git stash
git stash save "Work in progress"

# Lista los almacenes temporales
git stash list

# Aplica el almacén
git stash apply           # Mantiene el almacén
git stash pop             # Aplica y elimina el almacén

# Aplica un almacén específico
git stash apply stash@{0}

# Elimina el almacén
git stash drop stash@{0}
git stash clear           # Elimina todos los almacenes
Gestión de almacenes temporales

Visualización de cambios

Inspecciona diferencias e historial

# Muestra cambios no preparados
git diff

# Muestra cambios preparados
git diff --staged
git diff --cached

# Muestra cambios entre confirmaciones
git diff commit1 commit2

# Muestra cambios en un archivo específico
git diff file.txt
Comandos de diff
# Muestra detalles de la confirmación
git show <commit-hash>

# Muestra el archivo en una confirmación específica
git show <commit-hash>:file.txt

# Muestra quién cambió qué en un archivo
git blame file.txt
Comandos de inspección

Etiquetado

Crea y gestiona etiquetas de versión

# Lista etiquetas
git tag

# Crea una etiqueta ligera
git tag v1.0.0

# Crea una etiqueta anotada
git tag -a v1.0.0 -m "Version 1.0.0"

# Etiqueta un commit específico
git tag -a v1.0.0 <commit-hash> -m "Message"

# Envía etiquetas al remoto
git push origin v1.0.0
git push origin --tags    # Envía todas las etiquetas

# Elimina una etiqueta
git tag -d v1.0.0
git push origin --delete v1.0.0
Operaciones de etiquetado

Comandos útiles

Comandos Git adicionales útiles

# Limpia archivos no rastreados
git clean -n              # Simulación
git clean -f              # Elimina archivos
git clean -fd             # Elimina archivos y directorios

# Busca en el repositorio
git grep "search term"

# Muestra quién hizo cambios en un archivo
git log --follow file.txt

# Crea un alias
git config --global alias.st status
git config --global alias.co checkout
Utilidades útiles
# Ignorar cambios del archivo
git update-index --assume-unchanged file.txt

# Rastrear cambios del archivo nuevamente
git update-index --no-assume-unchanged file.txt

# Mostrar archivos rastreados
git ls-files
Seguimiento de archivos
Hoja de referencia de Git