Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

...

Warnung

Bei 'git rebase x y' werden die Änderungen von Branch y auf x angewendet. Technisch wird also x der aktuelle Branch, auf denen dann die Patches/Diffs der Commits in y angewendet werden. Im praktischen Leben bedeutet dies (meist), dass die Tools zur manuellen Konfliktbeseitigung meine (ours) Änderungen als remote/theirs Anzeigen! Dies liegt daran, dass Rebase x zu zum aktuellen Branch macht!

 

Vorgehen bei einem Konflikt

  1. Wenn man den Konflikt manuell lösen möchte, ein Tool zu manuellen Konfliktbeseitigung benutzen (s.u.)
  2. Die gerade laufende git Operation (s.o.) weiterführen (mit --continue), abbrechen (mit --abort), oder überspringen (mit --skip). Diese Optionen stehen nicht bei allen Kommandos zur Verfügung (s.o.)!
  3. Mittels git status kann man sich immer über den gegenwärtigen Zustand Überblick verschaffen.
  4. Mittels git show kann man sich die 3 Konfliktdateien (base, ours, theirs) anzeigen lassen. 
  5. Mittels 'git checkout [–base|–ours|–theirs]' kann man den Konflikt 'hart' für eine Datei lösen.
  6. Ebenfalls sinnvoll sind die Kommandos 'git diff [–base|--ours|--theirs]', 'git log --merge' und 'gitk --merge'

...

  • git mergetool
    Dieses Tool arbeitet mit diversen 3-Wege-Diff GUIs zusammen (emerge, gvimdiff, kdiff3, meld, vimdiff, tortoisemerge). Unter Linux empfehle ich, kdiff3 zu installieren und zu benutzen. Anleitungen für kdiff3 und meld.
  • Die Team Synchronizing Perspective von Eclipse
    Kann ich nicht empfehlen, da das 3-Wege-Diff GUI innerhalb von Eclipse nur sehr wenige Optionen zur Verfügung stellt. Die Konfliktbeseitigung wird hier beschrieben.
  • Das 3-Wege-Diff GUI aus SourceTree (nur OsX)