Skip to main content

Git Cheat Sheet

Git Cheat Sheet – Comandos Esenciales y Avanzados

Inicialización y configuración

git init                         # Inicia un nuevo repositorio Git
git config --global user.name "Tu Nombre"
git config --global user.email "tu.email@example.com"

Repositorios

git clone <url>                 # Clona un repositorio remoto
git clone /ruta/local /nuevo # Clona un repositorio local
git remote add origin <url> # Añade un repositorio remoto

Sincronización

git fetch origin                # Descarga cambios remotos sin fusionar
git pull origin main # Descarga y fusiona desde el remoto
git push origin main # Sube commits locales al remoto

Gestión de ramas

git branch                      # Lista ramas locales
git branch <nombre> # Crea nueva rama
git checkout <rama> # Cambia de rama
git switch <rama> # Alternativa moderna a checkout
git checkout -b <rama> # Crea y cambia a la nueva rama
git branch -d <rama> # Elimina una rama fusionada
git branch -D <rama> # Fuerza eliminación de una rama
git merge <rama> # Fusiona una rama en la actual
git merge -s ours <rama> # Usa estrategia "ours" al fusionar
git merge -s octopus <a> <b> # Fusión múltiple de ramas

Staging y commits

git status                      # Estado del repositorio
git add <archivo> # Añade archivo al staging
git add . # Añade todos los cambios
git add -p # Añade interactivamente por fragmento
git restore --staged <archivo> # Quita del staging (mantiene cambios)
git commit -m "Mensaje" # Crea un commit
git commit # Crea commit con mensaje desde editor
git commit --amend # Modifica último commit

Historial

git log                        # Historial completo
git log --oneline # Historial resumido
git log --graph --oneline # Historial visual
git log --author="Nombre" # Historial por autor
git log --grep="texto" # Filtrar por palabra clave
git diff # Muestra diferencias
git diff --staged # Diferencias en staging

Etiquetas

git tag                        # Lista etiquetas
git tag v1.0 # Crea etiqueta ligera
git tag -a v1.0 -m "mensaje" # Crea etiqueta anotada
git show v1.0 # Detalles de la etiqueta
git push origin v1.0 # Sube una etiqueta
git push origin --tags # Sube todas las etiquetas
git tag -d v1.0 # Elimina etiqueta local
git push origin :refs/tags/v1.0 # Elimina etiqueta remota

Git Stash

git stash save "comentario"    # Guarda cambios en stash
git stash list # Lista stashes
git stash pop # Aplica y elimina el último stash
git stash apply stash@{n} # Aplica un stash específico
git stash drop stash@{n} # Elimina stash sin aplicarlo

Cherry-pick

git cherry-pick <commit>       # Aplica un commit específico

Git Bisect

git bisect start               # Inicia búsqueda binaria
git bisect good <commit> # Marca un commit como bueno
git bisect bad <commit> # Marca uno como malo
git bisect run <script> # Automatiza la búsqueda
git bisect reset # Finaliza y vuelve al punto original

Reset (revisar commits)

git reset --soft HEAD~1        # Elimina commit, mantiene staging
git reset HEAD~1 # Elimina commit, mantiene cambios locales
git reset --hard HEAD~1 # Elimina commit y cambios locales

Rebase

git rebase <rama>              # Reorganiza historial sobre otra rama
git rebase -i HEAD~n # Rebase interactivo (squash, edit, drop)

Otras utilidades

git branch -r                  # Lista ramas remotas
git push -u origin <rama> # Crea rama remota y establece seguimiento
git push origin --delete <rama> # Elimina rama remota
git checkout <tag> # Revisa estado exacto de una etiqueta

https://education.github.com/git-cheat-sheet-education.pdf


Recursos útiles

1. "Learn Git Branching"

Es, sin duda, la herramienta más recomendada. Es un simulador interactivo donde escribes comandos y ves en tiempo real cómo se mueven las ramas y los commits en un diagrama animado.

  • Por qué funciona: Te propone retos (puzles) que debes resolver.
  • Qué aprendes: merge, rebase, cherry-pick y manejo de ramas avanzado.
  • Enlace: learngitbranching.js.org

2. Visualizadores en tiempo real (Playgrounds)

Si quieres experimentar sin miedo a romper nada, existen sitios web que dibujan el árbol de Git mientras pruebas comandos:

  • Visualizing Git: Una pantalla limpia donde cada comando que escribes genera un nodo visual. Ideal para entender el HEAD y los punteros.
  • Git School: Similar al anterior, pero muy enfocado en la relación entre el repositorio local y el remoto.

3. Clientes de Escritorio (GUIs)

A veces, para trabajar, es mejor usar una interfaz que te permita "ver" el historial sin comandos complicados. Los más populares son:

HerramientaLo mejor
GitKrakenProbablemente la interfaz más estética y clara para ver árboles complejos.
SourcetreeMuy completo y gratuito, desarrollado por Atlassian.
ForkRápido, intuitivo y con una gestión de conflictos de archivos excelente.
GitHub DesktopEl más sencillo, ideal si estás empezando y usas GitHub.

4. Extensiones para VS Code

Si usas Visual Studio Code, no necesitas salir del editor para ver Git de forma gráfica:

  • Git Graph: Te muestra el historial de commits como un mapa de metro. Puedes hacer click en los nodos para ver cambios, crear ramas o hacer merges visualmente.
  • GitLens: Te da una superpotencia visual, mostrándote quién escribió cada línea de código y permitiéndote navegar por el historial visualmente.