Saltar al contingut principal
Tornar enrere

Undo Last Commit

#git

De vegades fiquem la pota fins al fons en l’últim commit i no n’hi ha prou amb un simple revert. Volem esborrar-lo de la faç de la terra (local i remotament) com si mai hagués existit.

Perill: Destructiu

Aquest mètode elimina canvis. Si treballes en equip, assegura’t que ningú hagi baixat els teus canvis abans de fer això o tindràs problemes.

1. Corregir missatge o fitxer oblidat (Opció Ràpida)

Si només t’has equivocat en el missatge o t’has deixat un fitxer fora, no cal fer reset. Afegeix els canvis i “esmena” el commit. Això reemplaça l’últim commit per un de nou corregint l’error.

bash
git add .
git commit --amend

En executar això, s’obrirà el teu editor de text predeterminat (Vim, Nano, VS Code…) amb el missatge del commit anterior.

  1. Modifica el missatge si vols.
  2. Desa i tanca el fitxer (a Vim: :wq).
  3. Git detectarà que has acabat i crearà el nou commit reemplaçant el vell.

2. Retrocedir sense perdre res (Local)

Fem servir reset --soft per desfer el commit però mantenir els teus canvis preparats (staged). Així pots corregir el que estava malament, afegir el que faltava i tornar a fer el commit.

bash
git reset --soft HEAD~1

3. Matxucar la història (Remot)

Ara el teu repo local està “en el passat” però GitHub encara està “en el futur”. Si intentes fer un push normal, git et rebutjarà. Necessites forçar l’escriptura perquè el remot accepti la teva versió antiga com a “veritat absoluta”.

bash
git push origin +main

Nota: El símbol + abans del nom de la branca (+main) és una sintaxi curta per a --force. Fa el mateix però et fa sentir més hacker.

Alternativa Perillosa: Hard Reset (L’opció Nuclear)

Si git reset --soft és com desfer l’escriptura, git reset --hard és com cremar el paper i començar de nou. És l’opció nuclear per quan no vols recuperar res del que vas fer a l’últim commit.

Perill Extrem

Aquesta comanda elimina permanentment tots els canvis als teus fitxers que no hagis commitejat. No hi ha marxa enrere (fàcil). Fes-ho servir només si estàs 100% segur que la teva feina recent és escombraries.

1. Esborrar rastre (Local)

Això mou el punter enrere i sincronitza el teu directori de treball amb aquell estat antic.

bash
git reset --hard HEAD~1

2. Forçar la història (Remot)

Igual que amb el soft reset, el remot rebutjarà això perquè has reescrit el passat.

bash
git push origin +main