Post

Git: undo zonder paniek

Git: undo zonder paniek

Git heeft minstens tien manieren om iets ongedaan te maken. Dat klinkt fijn, maar in de praktijk sta je met zwetende handen te googelen welk commando je nu ook alweer nodig hebt. Hier is de versie die ik zelf gebruik: vier situaties, vier oplossingen.

Situatie 1: file aangepast, nog niet gecommit

Je hebt een bestand gewijzigd maar wilt terug naar de laatste commit-versie.

1
git restore pad/naar/bestand

Alles in één keer terugzetten:

1
git restore .

Let op: dit gooit je lokale wijzigingen weg. Er is geen undo van de undo.

Situatie 2: ge-staged, maar je wilt het terug

Je hebt git add gedaan, maar je wilt het bestand weer uit de staging area halen. De wijzigingen blijven intact.

1
git restore --staged pad/naar/bestand

Situatie 3: gecommit, maar nog niet gepusht

De commit is lokaal, niemand anders heeft hem gezien. Je hebt twee opties.

Commit weg, wijzigingen behouden (meest veilig):

1
git reset --soft HEAD~1

Je wijzigingen staan weer in staging. Handig als je commit message niet klopte, of als je nog iets wilt toevoegen.

Commit én wijzigingen weg (nucleaire optie):

1
git reset --hard HEAD~1

Gebruik --hard alleen als je echt zeker weet dat je die changes niet meer nodig hebt.

Situatie 4: al gepusht en gedeeld

Zodra anderen jouw commit hebben, wil je de geschiedenis niet herschrijven. Gebruik revert — dat maakt een nieuwe commit die de vorige terugdraait:

1
git revert <commit-sha>

De history blijft intact en je collega’s krijgen geen conflicten.

Wanneer wat

SituatieCommandoHistory intact?
Lokale wijziging weggooiengit restoreJa
Unstagengit restore --stagedJa
Lokale commit terugdraaiengit reset --softNee
Gepushte commit terugdraaiengit revertJa

Altijd eerst checken

Voordat je iets doet, kijk even waar je staat:

1
2
git status -sb
git log --oneline -5

Twee seconden werk die je een hoop ellende besparen.

Pro tip

De vuistregel is simpel:

  • Gepusht?git revert
  • Niet gepusht?git reset kan
  • Alleen een file?git restore

Onthoud die drie en je hoeft nooit meer te googelen.