web-dev-qa-db-ja.com

マージコミットSHA1が与えられた場合、実行されたgitマージの競合解決をどのように表示/表示しますか?

競合を解決し、変更をステージングしてからgit diffを実行すると、「ours」と「theirs」の2つの+と-の列が表示されます。リポジトリのgit履歴にマージコミットがある場合、他の誰かが行った解決策をどのように確認できますか?他の例では、以前に(gitkで)見たことがありますが、私が持っているこのSHA1については、それを判別できないようです。

28
Pistos

参照がわかっている場合、git show <MERGE_COMMIT>は、マージコミットに対して実行された解決策(ある場合)を表示します。

ログには、git log -p -cまたはgit log -p --ccを使用します。 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.
36
micromoses

わずかなバイクシェッド:diff3またはkdiff3を使用して、マージを逆に表示できます。特に、競合を解決するために2番目の変更が導入された(gitスタイル)「悪」のマージの場合はそうです。 (爆発するヘッドがどのように変更を「バックアウト」するかを確認しようとしていることに注意してください;-)

明らかに、「ベース」コミットはマージされたコミットになります。

0
Philip Oakley