17. August 2013

Umschreiben der Historie: git rebase

Definition upstream / downstream

Wird ein Branch (z.B. feature1) von einem anderen Branch (z.B. master) abgeleitet, wird feature1 als downstream und master als upstream bezeichnet:

upstream / downstream

Änderungen fließen von der upstream Quelle stromabwärts in die abgeleiteten downstream Branches.

Achtung

git rebase

Merge vs. Rebase

Interaktives Rebase

Tipps & Tricks: autosquash

$ git commit -a -m "feature1: started implementing feature1"
$ git commit -a -m "squash! feature1"
$ git commit -a -m "squash! feature1"
$ git rebase -i --autosquash origin/master

Commits bearbeiten mit git filter-branch

Aufgaben

  1. Erstellen Sie einen neuen Branch newfeature basierend auf master und committen Sie in diesem zwei unabhängige Änderungen.
  2. Wechseln Sie zu master und committen Sie hier ebenfalls eine Änderung.
  3. Wechseln Sie zurück zu newfeature und mergen Sie master.
  4. Verwenden Sie git rebase -i master um die Historie von newfeature neu auf master aufzusetzen und den Merge zu entfernen. Sortieren Sie dabei auch die beiden Commits in die umgekehrte Reihenfolge um.
  5. Verwenden Sie git rebase -i master um die beiden Commits zu einem Commit zusammenzufassen.
  6. Wechseln Sie zu master und mergen Sie den Commit aus newfeature.