25 lines
1.3 KiB
Markdown
25 lines
1.3 KiB
Markdown
---
|
|
created: 2024-02-20 11:27
|
|
updated: 2024-03-12 13:49
|
|
tags:
|
|
- 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.
|