Git esencial
Comandos de Git del día a día: ramas, commits, historial, stash, rebase, etiquetas, deshacer cambios, limpieza y trabajo remoto.
- #git
- #vcs
- #ramas
- #commits
Configuración inicial
| Acción | Comando |
|---|---|
| Definir tu nombre global | |
| Definir tu correo global | |
Establecer main como rama por defecto | |
| Ver toda la configuración activa |
Estado y diferencias
| Acción | Comando |
|---|---|
| Estado resumido con la rama y su tracking | |
| Cambios sin preparar (working tree) | |
| Cambios ya preparados para el commit | |
| Solo los nombres de archivos cambiados | |
Comparar tu rama con main |
Commits
| Acción | Comando |
|---|---|
| Preparar un archivo concreto | |
| Elegir trozo a trozo qué preparar | |
| Crear el commit | |
| Añadir cambios al último commit sin tocar el mensaje |
Usa Conventional Commits: tipo(scope): descripción en imperativo, con tipos como feat, fix, chore, docs, test, refactor, perf o ci. Haz --amend solo sobre commits que aún no has subido.
Ramas
| Acción | Comando |
|---|---|
| Listar todas las ramas (locales y remotas) | |
| Crear y cambiar a una rama nueva | |
| Cambiar a una rama existente | |
| Volver a la rama anterior | |
| Eliminar una rama ya fusionada | |
| Forzar el borrado de una rama |
Historial
| Acción | Comando |
|---|---|
| Historial compacto como grafo de todas las ramas | |
| Historial de un archivo con sus diffs | |
| Seguir un archivo aunque se haya renombrado | |
| Buscar commits por mensaje | |
| Quién cambió cada línea | |
| Ver un commit concreto | |
| Ver un archivo tal como estaba en otra rama |
Stash: guardar cambios temporalmente
| Acción | Comando |
|---|---|
| Guardar los cambios con un mensaje | |
| Incluir también archivos nuevos sin seguimiento | |
| Listar los stashes | |
| Recuperar el último y borrarlo de la lista | |
| Aplicar uno concreto sin borrarlo | |
| Borrar un stash |
Rebase e integración
| Acción | Comando |
|---|---|
Reaplicar tu rama sobre la última main | |
| Continuar tras resolver un conflicto | |
| Cancelar el rebase y volver al estado inicial | |
| Copiar un commit concreto a la rama actual | |
| Fusionar creando siempre un commit de merge |
Haz rebase solo sobre ramas que nadie más usa. Si tu rama ya estaba subida, publícala después con git push --force-with-lease, nunca con --force.
Etiquetas
| Acción | Comando |
|---|---|
| Crear una etiqueta anotada | |
| Listar etiquetas | |
| Subir una etiqueta | |
| Subir todas las etiquetas | |
| Borrar una etiqueta local |
Deshacer cambios
| Acción | Comando |
|---|---|
| Descartar cambios locales en un archivo | |
| Quitar un archivo del área de staging | |
| Corregir el mensaje del último commit | |
| Deshacer el último commit conservando los cambios | |
| Revertir un commit ya subido con un commit nuevo | |
Ver dónde ha estado HEAD (para recuperar commits) | |
| Recuperar un commit perdido en una rama nueva | |
| Descartar todo y volver a un commit (destructivo) |
git reset --hard borra los cambios sin confirmar sin posibilidad de recuperarlos y reescribe la historia: no lo uses en ramas compartidas. En ramas ya subidas usa git revert.
Mover y borrar archivos
| Acción | Comando |
|---|---|
| Renombrar o mover conservando el historial | |
| Borrar un archivo del repositorio | |
| Dejar de versionar un archivo sin borrarlo del disco |
Haz el git mv en un commit y los cambios de contenido en otro: así Git detecta el renombrado y git log --follow sigue funcionando.
Trabajo remoto y limpieza
| Acción | Comando |
|---|---|
Vincular el repositorio remoto origin | |
| Subir la rama actual y configurar el tracking | |
| Traer cambios aplicando rebase limpio | |
| Descargar referencias remotas sin fusionar |
Limpieza de ramas
| Acción | Comando |
|---|---|
Ramas locales ya fusionadas en main | |
| Ramas aún sin fusionar | |
| Quitar referencias a ramas remotas borradas | |
| Borrar una rama en el remoto | |
| Ver ramas cuyo remoto ya no existe |
Bisect: encontrar el commit que rompió algo
| Acción | Comando |
|---|---|
| Empezar la búsqueda | |
| Marcar el commit actual como roto | |
| Marcar un commit que funcionaba | |
| Automatizar con un script de tests | |
| Terminar y volver a tu rama |
Git hace una búsqueda binaria: tras cada good o bad cambia a otro commit hasta señalar el primero que falla.