So lösen Sie Konflikte in SourceTree / git interaktiv (visuell)

119

Ich verwende (Windows) SourceTree für mein Git-Projekt. Ich kann es entweder in der Eingabeaufforderung oder im Linux-Terminal tun.

Aber ich frage mich, ob es eine gute Möglichkeit gibt, Konflikte interaktiv und visuell zu lösen. Wenn Pull beispielsweise Konflikte erkennt, wird ein GUI-basiertes Konflikttool (z. B. P4Merge) angezeigt. Ist es möglich?

Ich löse immer manuell Konflikte, was nur schmerzhaft ist.

Dies ist beispielsweise eine Git- pullNachricht von SourceTree.

git -c diff.mnemonicprefix=false -c core.quotepath=false pull --no-commit origin master
From W:\repo\
 * branch            master     -> FETCH_HEAD   

Updating 33c07bf..41e0249

error: Your local changes to the following files would be overwritten by merge:
    foo.cpp
    goo.cpp
    goo.hpp
Please, commit your changes or stash them before you can merge.
Aborting    

Completed with errors, see above.
Nullptr
quelle

Antworten:

135

Klicken Sie in SourceTree auf Extras-> Optionen. Aktivieren Sie dann auf der Registerkarte "Allgemein" das Kontrollkästchen, damit SourceTree Ihre Git-Konfigurationsdateien ändern kann.

Wechseln Sie dann zur Registerkarte "Diff". Verwenden Sie in der unteren Hälfte das Dropdown-Menü, um das externe Programm auszuwählen, mit dem Sie die Unterschiede und Zusammenführungen durchführen möchten. Ich habe KDiff3 installiert und mag es gut genug. Wenn Sie fertig sind, klicken Sie auf OK.

Wenn es jetzt zu einer Zusammenführung kommt, können Sie unter Aktionen-> Konflikte lösen-> Externes Zusammenführungs-Tool starten gehen.

gtrig
quelle
4
Ich habe es versucht, aber am Ende sehe ich nicht, dass es vergleichbar ist, gestartet zu werden. Ich sehe, dass Vergleichsdateien generiert werden, aber das war's. Ich kann Konflikte nicht lösen. Das Ändern auf den Standard- / Standardvergleich scheint ebenfalls nicht zu helfen.
Echiban
1
@echiban Sie haben wahrscheinlich die Standardlizenz für Beyond Compare, die keine 3-Wege-Zusammenführung akzeptiert. Sie müssen Profi werden, um es als Git-Mergetool zu verwenden
Pierdevara
6
Nachdem ich alle Schritte zum Konfigurieren von "External Merge Tool
starten
2
Außerdem habe ich die Zusammenführungskonfliktdatei nicht ausgewählt, als ich das getan habe, ging es gut
pal4life
2
Ich musste auf das Element "Nicht festgeschriebene Änderungen" in der Festschreibungsliste klicken, bevor es nicht mehr grau wurde.
Micah Zoltu
11

Ich verwende SourceTree zusammen mit TortoiseMerge / Diff, einem sehr einfachen und praktischen Diff / Merge-Tool.

Wenn Sie es auch verwenden möchten, dann:

  1. Holen Sie sich eine eigenständige Version von TortoiseMerge / Diff (ziemlich alt, da es seit Version 1.6.7 von TortosieSVN, also seit Juli 2011, nicht mehr eigenständig ausgeliefert wird). Links und Details in dieser Antwort .

  2. Entpacken Sie TortoiseIDiff.exeund TortoiseMerge.exein einen beliebigen Ordner ( c:\Program Files (x86)\Atlassian\SourceTree\extras\in meinem Fall).

  3. In SourceTree öffnen Tools > Options > Diff > External Diff / Merge. Wählen Sie TortoiseMergein beiden Dropdown-Listen.

  4. Hit OKund Punkt SourceTree zu Ihrem Standort TortoiseIDiff.exeund TortoiseMerge.exe.

Danach können Sie Resolve Conflicts > Launch External Merge Toolfür jede Konfliktdatei in Ihrem lokalen Repository aus dem Kontextmenü auswählen . Dadurch wird TortoiseMerge geöffnet, in dem Sie alle Konflikte, die Sie haben, problemlos bewältigen können. Wenn Sie fertig sind, schließen Sie einfach TortoiseMerge (Sie müssen nicht einmal Änderungen speichern, dies wird wahrscheinlich automatisch erfolgen) und nach einigen Sekunden sollte SourceTree dies ordnungsgemäß handhaben.

Das einzige Problem ist, dass automatisch eine Sicherungskopie erstellt wird, obwohl die richtige Option deaktiviert ist .

Trejder
quelle
4

Wenn das Menü Konflikte lösen-> Inhalt deaktiviert ist, befindet sich möglicherweise eines in der Liste Ausstehende Dateien. Wir müssen die Option "Konfliktdateien" aus der Dropdown-Liste (oben) auswählen.

ich hoffe es hilft

Ozkary
quelle