Referencia de Comandos Git
Manual completo de comandos Git, organizado por categorías para búsqueda rápida
Comandos Básicos(13)
Crear nuevo repositorio Git en directorio actual
Clonar repositorio remoto a local
Clonación superficial, solo último commit
Agregar archivo al área de staging
Agregar todos los cambios al staging
Confirmar cambios en staging
Modificar el último commit
Mostrar estado actual del repositorio
Mostrar cambios sin staging
Mostrar cambios en staging
Mostrar toda la configuración
Configurar nombre global
Configurar email global
Gestión de Ramas(14)
Listar todas las ramas locales
Listar todas las ramas (incluyendo remotas)
Crear nueva rama
Eliminar rama
Renombrar rama
Cambiar a una rama
Crear y cambiar a nueva rama
Cambiar a una rama (Git 2.23+)
Crear y cambiar a nueva rama (Git 2.23+)
Fusionar rama especificada con actual
Fusionar con commit de fusión
Rebase rama actual sobre rama especificada
Continuar rebase después de resolver conflictos
Aplicar commit específico a rama actual
Operaciones Remotas(10)
Mostrar detalles de repositorios remotos
Agregar repositorio remoto
Obtener último contenido del remoto
Obtener actualizaciones de todos los remotos
Obtener y fusionar rama remota
Obtener y rebase
Enviar a repositorio remoto
Forzar push (usar con precaución)
Push y establecer rama upstream
Eliminar rama remota
Deshacer Cambios(8)
Quitar archivo del staging
Deshacer último commit, mantener cambios
Deshacer commit y staging, mantener directorio
Deshacer commit y descartar todos los cambios
Deshacer commit (crea nuevo commit)
Restaurar archivo del directorio (Git 2.23+)
Quitar archivo del staging (Git 2.23+)
Eliminar archivos y directorios no trackeados
Gestión de Etiquetas(6)
Listar todas las etiquetas
Crear etiqueta ligera
Crear etiqueta anotada
Eliminar etiqueta local
Enviar etiqueta al remoto
Enviar todas las etiquetas al remoto
Ver Historia(7)
Mostrar historial de commits
Mostrar historial compacto
Mostrar historial de todas las ramas como gráfico
Mostrar detalles del commit
Mostrar historial de modificación por línea
Mostrar todo historial de operaciones
Iniciar búsqueda binaria del commit problemático
Stash(7)
Guardar cambios actuales
Guardar cambios con mensaje
Listar todos los stash
Aplicar y eliminar último stash
Aplicar stash sin eliminar
Eliminar último stash
Eliminar todos los stash
¿Qué es Git?
Una chuleta de Git es una referencia rápida de comandos de control de versiones, organizada según la tarea que quieres realizar. Git es un sistema distribuido: cada clon contiene el historial del proyecto, las ramas son punteros ligeros y los commits registran cómo cambia una base de código con el tiempo. La chuleta ayuda cuando recuerdas el flujo de trabajo pero no la sintaxis exacta, por ejemplo ver cambios en staging, crear una rama, deshacer un commit, guardar trabajo con stash, etiquetar una versión o sincronizar con un remoto. Es una referencia, no un sustituto de entender el estado del repositorio. Comandos destructivos como reset --hard, clean -fd, rebase o push forzado deben copiarse solo tras revisar cambios sin commit, rama actual e impacto remoto.
Guía de uso
Referencia rápida
- Haz clic en una tarjeta de comando para copiarla
- Usa la búsqueda para encontrar rápidamente comandos específicos
- Haz clic en las etiquetas de categoría para filtrar por tipo
- Pasa el cursor sobre los comandos para ver descripciones detalladas
Características
Consejos avanzados
- Usa git restore --staged para sacar archivos del staging
- Usa git commit --amend para modificar el último commit
- Usa git stash para guardar temporalmente el progreso del trabajo
- Usa git revert para deshacer commits ya enviados
Casos de uso
Principio técnico
Los cambios locales fluyen a través de tres áreas: el directorio de trabajo, el índice (también llamado área de staging, almacenado en .git/index), y la base de datos de objetos. git add registra hashes de blob en el índice, git commit congela el índice en un nuevo objeto tree y commit, y git checkout/switch actualiza el índice y el árbol de trabajo a un commit objetivo. Las fusiones se dividen en dos categorías: fast-forward simplemente avanza el puntero de la rama cuando el objetivo es un descendiente directo, mientras que las fusiones de tres vías (estrategia recursiva u ort) calculan un ancestro común y construyen un commit de fusión con dos padres. git rebase reescribe la historia rejugando commits uno a uno sobre una nueva base, produciendo nuevos SHAs.
La sincronización remota se ejecuta sobre el protocolo inteligente HTTPS, SSH o el protocolo obsoleto git://, intercambiando archivos pack generados por compresión delta. Después de un fetch, Git almacena el snapshot bajo refs/remotes/origin/* y el reflog bajo .git/logs/ mantiene un rastro de deshacer de 90 días por defecto (gc.reflogExpire) para que incluso reset --hard o un rebase mal ejecutado puedan recuperarse antes de que la recolección de basura poda objetos inalcanzables.
- Modelo de objetos: blob, tree, commit, tag — con direccionamiento por contenido mediante SHA-1 (o SHA-256 desde 2.29), almacenados sueltos bajo .git/objects/xx/ o empaquetados en .git/objects/pack/*.pack
- Índice/staging: .git/index es un archivo binario que asigna ruta → hash blob + información de stat; git add lo actualiza, git commit lo congela en un tree
- Refs y HEAD: refs/heads/<branch>, refs/remotes/<remote>/<branch>, refs/tags/<tag> son archivos planos que contienen un SHA; HEAD es una referencia simbólica a la rama actual
- Estrategias de fusión: fast-forward cuando el objetivo es un descendiente, de lo contrario fusión recursiva/ort de tres vías usando la base de fusión; --no-ff fuerza un commit de fusión
- Reescrituras con rebase: git rebase reejecuta commits sobre una nueva base produciendo nuevos SHAs, rompiendo la historia compartida si se empuja — de ahí que --force-with-lease se prefiera sobre --force
- Recuperación con reflog: .git/logs/HEAD y los logs por referencia retienen movimientos de refs durante 90 días (gc.reflogExpire); git reflog más git reset restaura después de operaciones destructivas
- Transporte: HTTPS inteligente, SSH o git:// negocian archivos pack mediante el protocolo upload-pack/receive-pack; los clones superficiales usan --depth para limitar el historial
Ejemplos
Crear y cambiar a una nueva rama
git checkout -b feature/login # Crear y cambiar a una nueva ramaDeshacer cambios en el directorio de trabajo
git restore filename # Restaurar el archivo al último estado confirmadoVer historial de commits
git log --oneline --graph --all # Mostrar gráficamente el historial de todas las ramasPreguntas frecuentes
¿Cómo deshago el commit más reciente?
git reset --soft HEAD~1 deja tus cambios en stage para que puedas hacer commit otra vez; git reset --mixed HEAD~1 los deja en el árbol de trabajo pero sin stage; git reset --hard HEAD~1 los descarta. Si el commit ya está pusheado, usa git revert HEAD, que crea un nuevo commit que deshace el cambio sin reescribir la historia.
¿Cuál es la diferencia entre git pull y git fetch?
git fetch solo descarga commits del remoto a tus refs locales: nunca toca tu rama de trabajo. git pull equivale a git fetch seguido de git merge (o git rebase si --rebase está activo). Usa fetch cuando quieras inspeccionar los cambios upstream antes de integrarlos.
¿Cómo descarto cambios locales en un archivo?
git restore <file> descarta las ediciones sin commit en el árbol de trabajo; git restore --staged <file> quita el archivo del stage sin perder su contenido; git checkout HEAD -- <file> restaura la versión del último commit. Para archivos no rastreados usa git clean -f, o -fd para borrar también directorios.
¿Cuándo conviene rebase y cuándo merge?
Rebase cuando quieras una historia lineal en una rama de feature privada antes de integrarla. Merge cuando integras una rama compartida y conservar la historia real de desarrollo importa. Nunca rebases commits que ya están en una rama compartida salvo que todos estén de acuerdo: reescribe los SHA y rompe los clones de los demás.
¿Cómo veo lo que está a punto de pushearse?
git log @{u}.. muestra los commits de tu rama que no están en el upstream. git diff @{u} muestra el diff combinado. git status comparado con origin (tras un fetch) muestra cuántos commits estás por delante o por detrás.
¿Cómo recupero una rama eliminada o un commit perdido?
git reflog lista todas las posiciones por las que ha pasado HEAD; encuentra el SHA del commit perdido y ejecuta git checkout <sha> o git branch <name> <sha>. Las entradas del reflog duran unos 90 días por defecto antes de la recolección de basura, así que hazlo poco después del error.
¿Cuál es la forma más segura de enmendar un commit?
git commit --amend te permite editar el mensaje del commit más reciente o añadir archivos olvidados. Reescribe el SHA, así que hazlo solo en commits locales no pusheados. Si tienes que enmendar un commit ya pusheado, hazlo con --force-with-lease (no --force) para no pisar las actualizaciones de tus compañeros.