17. August 2013

Commits nachbessern (amend), rückgängig machen (revert), verwerfen (reset)

Der letzte Commit kann mittels git commit --amend nachgebessert werden, z.B. um einen Tippfehler in der Commit-Nachricht zu korrigieren oder Änderungen hinzuzufügen:

$ git commit --amend

Mit git revert wird ein Commit mit einem “Gegen-Commit”, der die Änderungen des Commits aufhebt, rückgängig gemacht:

$ git revert <commit>
$ git log 
8b54ea7 Revert "the 2rd commit"
068b9b9 the 2rd commit
3720b35 the 1nd commit

Auch länger zurückliegende Commits können so rückgängig gemacht werden (dies kann jedoch einen manuell zu behebenden Konflikt verursachen).

Mit git reset kann die HEAD-Referenz auf den letzten Commit verändert werden. Damit können nachfolgende Commits verworfen werden:

$ git reset [commit]              # HEAD + Index
$ git reset --hard [commit]       # HEAD + Index + Working Tree

Achtung: git commit --amend und git reset verändern die Historie und sollten daher nur für “private” Commits verwendet werden, die noch nicht mit einem anderen Repository ausgetauscht wurden.

Aufgaben

  1. Ändern Sie die readme.txt Datei und committen Sie die Änderung.
  2. Ändern Sie die Commit-Message des erstellten Commits mit git commit --amend.
  3. Machen Sie den Commit mit git revert rückgängig, zeigen Sie die Historie mit git log an.
  4. Verwerfen Sie den Commit und den Revert-Commit mit git reset.