master-wiki/03. Resources/Development/Fix messy commits.md
aleidk c84ad03d4c Update from obsidian - thinkpad
Affected files:
.obsidian/app.json
.obsidian/graph.json
.obsidian/plugins/obsidian-omnivore/data.json
.obsidian/plugins/update-time-on-edit/data.json
01. Projects/Fuuka/Outline.md
01. Projects/Juuno/Outline.md
01. Projects/Renuncia/Renuncia.md
02. Areas/Dotfiles/dotfiles tasks.md
02. Areas/Escape Latam/Canada.md
02. Areas/Escape Latam/Comparación de Paises.md
02. Areas/Escape Latam/Escapar de Latam.md
02. Areas/Escape Latam/New Zeldand.md
03. Resources/Development/Feature shipment checklist.md
03. Resources/Development/Fix messy commits.md
03. Resources/Development/Git.md
03. Resources/Development/Iframes.md
03. Resources/Development/Revert old changes in a codebase.md
03. Resources/Development/Search for a bug.md
03. Resources/Notetaking/Habits.md
Read Later/2024-02-12 - Debouncing in JavaScript – Explained by Building Auto-Complete Functionality in React.md
notes/Git.md
2024-02-20 12:23:30 -03:00

1.3 KiB

created updated tags
2024-02-20 11:27 2024-02-20 11:31
dev-tools

Fix messy commits

Ya que estas opciones sobre escriben el historial de git, solo deben aplicarse en local y no commits publicados a un remote.

Como alternativa se puede intentar actualizar el historial remoto siempre y cuando el historial sea igual al local (osea, nosotros fuimos los últimos en actualizarlo y nadie ha hecho nada más). Para esto utilizamos git push --force-with-lease.

Last commit

Si solo necesitamos agregar un cambio pequeño al ultimo commit (typo o correr el formatter), podemos aplicarlo con git commit --ammend, se puede sobre escribir el mensaje con -m.

Mutiple commits

Se pueden arreglar el historial de commits con un git rebase -i [since commit or branch] y utilizar las estrategias de pick, squash, reword y drop.

En caso de que sepamos que haremos un commit que luego no necesitaremos, podemos hacer:

  • git commit --fixup [commit hash] -> descarta el commit message de este commit y mantiene el del commit de referencia
  • git commit --squash [commit hash] -> git juntará los mensajes de todos los commits a hacer squash y el commit de referencia.

Finalmente podemos hacer git rebase -i --autosquash y git eligirá las opciones necesarias a tomar en vez de tener que hacerlo de manera manual.