2013-03-07 8 views
21

Wenn Sie einen Konflikt lösen, dann führen Sie die Änderungen durch, dann machen Sie ein git diff, es zeigt Ihnen zwei Spalten von + 's und -'s, eins für "unseres" und eins für "ihres". Wie sehe ich angesichts eines Merge-Commits in der GIT-Geschichte eines Repos diese Auflösung, die von jemand anderem gemacht wurde? In anderen Fällen habe ich es schon einmal gesehen (in gitk, denke ich), aber ich kann es anscheinend nicht für diese SHA1, die ich habe, feststellen.Wie sehen/zeigen Sie eine Git Merge Konfliktlösung, die bei einem Merge Commit SHA1 durchgeführt wurde?

+0

„um eine git diff tun, es zeigt Ihnen zwei Spalten von + 's und -'s, eine für‚unsere‘und eine für‚ihre‘“ ... es tut das? Wie hast du deinen Git konfiguriert? – gcbenison

+0

@gcbenison: Es tut dies nur, wenn Sie einen Zusammenführungskonflikt haben, bevor Sie Ihre Konfliktlösung festgelegt haben. Ich denke nicht, dass das irgendeine spezielle Konfiguration erfordert. – Pistos

Antwort

25

Wenn Sie die Referenz kennen, zeigt git show <MERGE_COMMIT> Ihnen die Auflösung (falls vorhanden) für die Zusammenführung Commit.

Verwenden Sie für das Protokoll git log -p -c oder git log -p --cc. Von der manpage von git log:

-c 
     With this option, diff output for a merge commit shows the differences from each 
     of the parents to the merge result simultaneously instead of showing pairwise 
     diff between a parent and the result one at a time. Furthermore, it lists only 
     files which were modified from all parents. 

    --cc 
     This flag implies the -c option and further compresses the patch output by 
     omitting uninteresting hunks whose contents in the parents have only two 
     variants and the merge result picks one of them without modification. 
+0

Ich habe das selbst herausgefunden, aber ich gebe dir trotzdem eine Stimme und ein Accept. – Pistos

+1

Das funktioniert irgendwie. Ich sehe immer noch eine Reihe von Änderungen, die nur von einem der Merge-Köpfe eingeführt wurden, ich bin mir nicht sicher, ob es vielleicht daran liegt, dass ich zwei Merge-Commits hintereinander habe? Ich sehe alle uninteressanten Konfliktlösungen (die von kdiff3 gelöst wurden) und die interessanten. Ich bemerke, dass die interessanten Präfixe mit ++ im Gegensatz zu + oder - vorangestellt sind. – chrisortman

0

Leichter Bikeshed: Sie könnten diff3 oder kdiff3 verwenden, um die Zusammenführung in umgekehrter Richtung zu sehen, insbesondere wenn es sich um eine "böse" Verschmelzung handelte, bei der eine sekundäre Änderung eingeführt wurde, um den Konflikt zu lösen. (Achten Sie auf einen explodierenden Kopf, der versucht, zu sehen, wie er die Änderungen "löscht" ;-)

Offensichtlich wäre das "Basis" -Commit das gemischte Commit.