Chuleta de comandos de Git

Encuentre rápidamente un comando de Git por palabra clave (branch, commit, rebase, stash...), clasificado por categoría, con un botón para copiar cada comando directamente en su terminal.

Iniciar

git init
Inicializa un nuevo repositorio Git en la carpeta actual.
git clone <url>
Clona un repositorio remoto en una nueva carpeta local.
git config --global user.name "Nom"
Define el nombre de autor global de los commits.
git config --global user.email "email"
Define el correo electrónico de autor global de los commits.

Estado e historial

git status
Muestra los archivos modificados, añadidos o sin seguimiento.
git log
Muestra el historial de commits.
git log --oneline --graph --all
Historial condensado con el grafo de ramas.
git diff
Muestra los cambios que aún no están en el área de preparación.
git diff --staged
Muestra los cambios que ya están en el área de preparación (staged).
git show <commit>
Muestra el detalle de un commit concreto.

Modificar

git add <fichier>
Añade un archivo al área de preparación (staging).
git add -A
Añade todos los archivos modificados, añadidos y eliminados.
git commit -m "message"
Crea un commit con los archivos del área de preparación.
git commit --amend
Modifica el último commit (mensaje y/o contenido).
git restore <fichier>
Descarta los cambios de un archivo que no están en el área de preparación.
git restore --staged <fichier>
Saca un archivo del área de preparación sin perder los cambios.
git rm <fichier>
Elimina un archivo y prepara la eliminación.

Ramas

git branch
Lista las ramas locales.
git branch <nom>
Crea una nueva rama.
git switch <branche>
Cambia de rama activa.
git switch -c <branche>
Crea una rama y cambia a ella de inmediato.
git branch -d <branche>
Elimina una rama local que ya se ha fusionado.
git branch -D <branche>
Fuerza la eliminación de una rama local, aunque no esté fusionada.

Fusión y rebase

git merge <branche>
Fusiona una rama en la rama actual.
git rebase <branche>
Reaplica los commits de la rama actual sobre otra base.
git rebase -i HEAD~n
Rebase interactivo de los n últimos commits (reordenar, combinar con squash...).
git cherry-pick <commit>
Aplica un commit concreto sobre la rama actual.

Remoto

git remote -v
Lista los repositorios remotos configurados.
git fetch
Obtiene las referencias remotas sin fusionarlas.
git pull
Obtiene y fusiona los cambios remotos.
git push
Envía los commits locales al repositorio remoto.
git push -u origin <branche>
Envía una rama y la asocia como rama de seguimiento.
git push --force-with-lease
Fuerza el envío de forma más segura que un --force clásico.

Cancelar

git reset --soft HEAD~1
Deshace el último commit conservando los cambios en el área de preparación.
git reset --mixed HEAD~1
Deshace el último commit conservando los cambios fuera del área de preparación.
git reset --hard HEAD~1
Deshace el último commit y descarta sus cambios de forma definitiva.
git revert <commit>
Crea un nuevo commit que anula el efecto de un commit anterior.

Guardado temporal (stash)

git stash
Aparta temporalmente los cambios en curso.
git stash pop
Reaplica el último stash y lo quita de la lista.
git stash list
Lista los stashes guardados.

Etiquetas

git tag
Lista los tags existentes.
git tag -a v1.0.0 -m "message"
Crea un tag anotado.
git push origin --tags
Envía todos los tags locales al repositorio remoto.

Cómo funciona

Unos cuarenta comandos de Git habituales están clasificados por categoría (empezar, estado e historial, ramas, fusión y rebase, remoto, deshacer, stash, etiquetas). Escriba una palabra clave en la barra de búsqueda — el nombre de un comando (rebase), un concepto («deshacer», «fusionar») o una categoría — para filtrar la lista en directo y haga clic en «Copiar» junto al comando que necesite para pegarlo directamente en su terminal.

¿Cuál es la diferencia entre git fetch y git pull?

git fetch descarga las nuevas referencias del repositorio remoto sin modificar su rama local, lo que le da tiempo para revisar los cambios antes de integrarlos. git pull hace lo mismo y después fusiona (o hace rebase, según la configuración) automáticamente esos cambios en su rama actual.

¿Cuándo usar git reset en lugar de git revert?

Utilice git reset para reescribir el historial de una rama que aún no se ha compartido (o con precaución y en coordinación con el equipo), y git revert para deshacer limpiamente un commit ya enviado y que otras personas pueden estar usando, ya que añade un nuevo commit de anulación sin reescribir el historial existente.

Esta chuleta es totalmente estática y funciona sin conexión una vez cargada la página: no se envía ningún dato a un servidor, tampoco su búsqueda.