Chuleta de Git — Comandos listos para copiar

Todos los comandos de Git que usas a diario, y los que necesitas cuando algo sale mal, explicados en una línea. Escribe una vez tus nombres de rama, remoto y archivo, y copia comandos listos para ejecutar.

Actualizado el
Tus valoresCada ejemplo de abajo se actualiza mientras escribes

Configuración

7
git config --global user.name "Ada Lovelace"

Define el nombre de autor que se registra en tus commits.

git config --global user.email "ada@example.com"

Define el email que se registra en tus commits; usa el vinculado a tu cuenta de GitHub o GitLab.

git config --global init.defaultBranch main

Asigna el nombre de la rama inicial de cada repositorio nuevo.

git config --global pull.rebase true

Haz que git pull aplique rebase a tus commits locales en lugar de crear commits de merge.

git config --global core.editor "code --wait"

Usa VS Code para los mensajes de commit y los rebase interactivos.

git config --global alias.lg "log --oneline --graph --decorate --all"

Añade un atajo git lg para ver el historial compacto en forma de grafo.

git config --list --show-origin

Muestra cada ajuste y el archivo del que procede; útil cuando una opción “no funciona”.

Iniciar un repositorio

6
git init

Convierte la carpeta actual en un repositorio de Git.

git clone git@github.com:acme/app.git

Descarga un repositorio con todo su historial.

git clone --depth 1 git@github.com:acme/app.git

Clon superficial con solo el último commit: mucho más rápido en repositorios grandes y en CI.

git remote add origin git@github.com:acme/app.git

Conecta un repositorio local con un remoto.

git remote -v

Lista los remotos y sus URLs de fetch y push.

git remote set-url origin git@github.com:acme/app.git

Cambia la URL de un remoto, por ejemplo de HTTPS a SSH.

Preparar y confirmar

12
git status -sb

Estado resumido con el nombre de la rama y cuántos commits vas por delante o por detrás del remoto.

git add src/app.js

Añade un archivo a la preparación para el próximo commit.

git add -p

Revisa y prepara los cambios fragmento a fragmento: la mejor forma de hacer commits enfocados.

git add -A

Prepara todo: archivos nuevos, modificados y eliminados.

git commit -m "Add login form"

Crea un commit con los cambios preparados y un mensaje.

git commit --amend --no-edit

Añade los cambios preparados al último commit y conserva su mensaje. Evítalo en commits que ya subiste.

git commit --amend -m "Better message"

Reescribe el mensaje del último commit.

git diff

Muestra los cambios que aún no están preparados.

git diff --staged

Muestra exactamente lo que contendrá el próximo commit.

git restore --staged src/app.js

Quita un archivo de la preparación pero conserva tus cambios.

git restore src/app.js

destructivo Descarta los cambios no confirmados de un archivo y lo devuelve al último commit.

git rm --cached src/app.js

Deja de rastrear un archivo (por ejemplo, tras añadirlo a .gitignore) sin borrarlo del disco.

Ramas

9
git branch -a

Lista las ramas locales y remotas.

git switch -c feature/login

Crea una rama nueva y cambia a ella.

git switch feature/login

Cambia a una rama existente.

git switch -

Vuelve a la rama en la que estabas antes.

git branch -m feature/login

Renombra la rama actual.

git branch --merged main

Lista las ramas ya fusionadas en la rama principal; seguro para eliminar.

git branch -d feature/login

Elimina una rama local que ya se haya fusionado.

git branch -D feature/login

destructivo Fuerza el borrado de una rama local aunque sus commits no estén fusionados en ningún sitio.

git push origin --delete feature/login

destructivo Elimina la rama en el remoto.

Sincronizar con el remoto

6
git fetch --all --prune

Descarga los commits nuevos y elimina las referencias a ramas remotas que ya no existen.

git pull

Descarga e integra la rama upstream en la actual.

git pull --rebase origin main

Vuelve a aplicar tus commits locales encima de la última versión de main.

git push -u origin feature/login

Sube una rama nueva y la configura como upstream, así el siguiente git push no necesita argumentos.

git push --force-with-lease

destructivo Fuerza el push tras un rebase, pero se niega si alguien subió cambios entretanto. Mucho más seguro que --force.

git push origin --tags

Sube todas las etiquetas locales.

Merge y rebase

10
git merge feature/login

Fusiona otra rama en la actual.

git merge --no-ff feature/login

Crea siempre un commit de merge para que la rama siga visible en el historial.

git merge --squash feature/login

Prepara todos los cambios de una rama como un único cambio, listo para un solo commit.

git rebase main

Mueve los commits de tu rama encima de la última versión de main para tener un historial lineal.

git rebase -i HEAD~3

destructivo Combina, reordena, reescribe o elimina los últimos N commits de forma interactiva. Reescribe el historial.

git rebase --continue

Continúa el rebase tras resolver los conflictos y preparar los archivos.

git rebase --abort

Cancela el rebase y vuelve al punto de partida.

git merge --abort

Cancela un merge que tiene conflictos.

git checkout --theirs src/app.js

Durante un conflicto, toma la versión entrante de un archivo (--ours conserva la tuya).

git cherry-pick a1b2c3d

Aplica un solo commit de otra rama sobre la actual.

Deshacer y corregir errores

9
git reset --soft HEAD~1

Deshace el último commit pero conserva sus cambios preparados.

git reset HEAD~1

Deshace el último commit y conserva sus cambios como modificaciones sin preparar.

git revert a1b2c3d

Crea un commit nuevo que revierte uno anterior: la forma segura de deshacer en ramas compartidas.

git reset --hard HEAD~1

destructivo Elimina el último commit y todos sus cambios.

git reset --hard origin/main

destructivo Deja tu rama local exactamente igual que el remoto, descartando commits y cambios locales.

git reflog

Lista los commits a los que apuntó HEAD recientemente: así encuentras los commits “perdidos” tras un reset o rebase mal hecho.

git reset --hard HEAD@{1}

destructivo Vuelve a donde estaba HEAD antes del último reset, rebase o checkout.

git clean -nd

Muestra una vista previa de los archivos y carpetas sin seguimiento que borraría git clean.

git clean -fd

destructivo Elimina archivos y carpetas sin seguimiento. Ejecuta antes la vista previa -nd.

Stash

6
git stash push -m "wip: feature/login"

Guarda aparte los cambios no confirmados con una etiqueta.

git stash -u

Guarda en stash incluyendo los archivos sin seguimiento.

git stash list

Lista todos los stashes.

git stash pop

Vuelve a aplicar el último stash y lo quita de la lista.

git stash apply stash@{0}

Vuelve a aplicar un stash pero lo mantiene en la lista.

git stash drop stash@{0}

destructivo Elimina un stash de forma permanente.

Historial e inspección

9
git log --oneline --graph --all

Grafo compacto de todas las ramas.

git log -p -- src/app.js

Historial de un archivo con el diff de cada cambio.

git log --author="Ada Lovelace" --since="2 weeks ago"

Commits de un autor en un periodo de tiempo.

git log -S "functionName"

Encuentra los commits que añadieron o quitaron un texto; ideal para saber “¿cuándo desapareció esto?”.

git blame -w src/app.js

Muestra quién cambió por última vez cada línea, ignorando los cambios de solo espacios.

git show a1b2c3d

Muestra el mensaje y el diff de un commit.

git diff main...feature/login

Cambios hechos en una rama desde que se separó de main: lo que mostraría una pull request.

git shortlog -sn

Número de commits por autor.

git bisect start
git bisect bad
git bisect good v1.2.0

Busca binariamente en el historial el commit que introdujo un error. Marca cada paso como bueno o malo y luego ejecuta git bisect reset.

Etiquetas y versiones

4
git tag -a v1.2.0 -m "Release v1.2.0"

Crea una etiqueta anotada para una versión.

git push origin v1.2.0

Sube una sola etiqueta.

git describe --tags --abbrev=0

Muestra la etiqueta más reciente.

git tag -d v1.2.0

destructivo Elimina una etiqueta local.

Worktrees y extras

4
git worktree add ../feature/login feature/login

Extrae otra rama en una carpeta aparte: trabaja en dos ramas sin usar stash.

git worktree list

Lista los worktrees vinculados.

git submodule update --init --recursive

Descarga y extrae todos los submódulos tras clonar.

git archive --format=zip -o release.zip HEAD

Exporta el árbol actual como ZIP, sin la carpeta .git.

Tus datos nunca salen de tu ordenador. Todo se procesa localmente en tu navegador.

Cómo usar: Chuleta de Git

  1. Escribe tus propios valores (rama, remoto, archivo, commit) en los campos de arriba; todos los ejemplos de la página se actualizan al instante.
  2. Busca o salta a una sección para encontrar el comando que necesitas.
  3. Haz clic en Copiar para copiar una línea lista para ejecutar, o en Copiar sección para copiar un bloque comentado.
  4. Los comandos marcados como destructivos borran o sobrescriben datos; lee la nota antes de ejecutarlos.

El flujo de trabajo de Git en un minuto

La mayoría del trabajo sigue el mismo ciclo: crear una rama con git switch -c, hacer cambios, revisarlos con git diff, prepararlos con git add -p, hacer commit y subirlos con git push -u. Antes de abrir una pull request, actualiza tu rama con git pull --rebase origin main para que se aplique limpiamente.

Comandos que reescriben el historial

commit --amend, rebase, reset y push --force modifican commits existentes. Está bien en una rama que solo usas tú, pero en ramas compartidas obliga a los demás a reparar sus copias. En ramas compartidas deshaz cambios con git revert y, si necesitas forzar el push, usa --force-with-lease.

Nada se pierde durante 30 días

Incluso después de un reset --hard o un rebase mal hecho, el trabajo confirmado sigue en el repositorio. git reflog muestra por dónde ha pasado HEAD, así que puedes volver a cualquier estado reciente. Los cambios sin confirmar son la excepción: haz commit o stash con frecuencia.

Genera comandos para situaciones concretas con el generador de comandos Git y empieza repositorios nuevos con el generador de .gitignore.

También se busca como: comandos git, lista de comandos git, referencia git, deshacer commit git, git rebase, git stash, comandos git con ejemplos.

Herramientas que combinan con: Chuleta de Git

  • Chuleta de Docker — Los comandos de Docker y Docker Compose que usas cada semana, explicados en una línea.
  • Chuleta de comandos Linux — Los comandos de Linux y bash que usan los desarrolladores en servidores y portátiles: archivos, búsqueda, permisos, procesos, logs, redes y SSH.
  • Prompts de IA para Desarrolladores — Prompts probados para las tareas de programación del día a día: depuración, revisiones, tests, refactorización, SQL, mensajes de commit y documentación.
  • Chuleta PowerShell — Los comandos de PowerShell que los desarrolladores y administradores usan a diario en Windows, y en PowerShell 7 en macOS y Linux, explicados en una línea cada uno.

Preguntas frecuentes

¿Cuál es la diferencia entre git fetch y git pull?
git fetch descarga los commits nuevos del remoto pero no toca tu rama. git pull hace fetch y después los fusiona (o les aplica rebase) en tu rama actual.
¿Cómo deshago el último commit?
Usa git reset --soft HEAD~1 para deshacer el commit y mantener los cambios preparados. Si el commit ya está subido a una rama compartida, usa git revert <commit> en su lugar para no reescribir el historial de nadie.
¿Debo usar merge o rebase?
Haz rebase de tu propia rama de funcionalidad sobre main para mantener un historial lineal y fácil de leer. Usa merge (o squash-merge) al integrar trabajo terminado en una rama compartida. Nunca hagas rebase de commits que otros ya han descargado.
¿Cómo recupero un commit que perdí tras un reset?
Ejecuta git reflog, busca la línea anterior al reset y ejecuta git reset --hard HEAD@{n}, o crea una rama a partir del hash de ese commit.
¿Puedo instalar Chuleta de Git como aplicación web y utilizarla sin conexión?
Sí. Chuleta de Git es una aplicación web instalable (PWA): se instala desde el navegador, no se descarga desde una tienda de aplicaciones. Haz clic en «Instalar aplicación» en la parte superior de esta página en Chrome o Edge (Windows, macOS, Linux, ChromeOS) o, en Android, utiliza «Compartir» → «Añadir a la pantalla de inicio» en iPhone y iPad, o «Archivo» → «Añadir al Dock» en Safari 17+ en un Mac. A continuación, se abrirá en su propia ventana con su propio icono y, como se ejecuta íntegramente en tu navegador, seguirá funcionando sin conexión. Firefox en el ordenador de sobremesa no permite instalar aplicaciones web. Cómo funciona la instalación.

Herramientas relacionadas