0

ファイルの履歴に「興味深い」競合解決を伴うマージ コミットが含まれている場合、 はgit logそれをスキップします。これはなぜですか? また、そのコミットを含めるにはどうすればよいですか?

HEAD(「興味深い」とは、単にバージョンを取得したり、そのままにしたりしない解決策を意味しMERGE_HEADます。)

たとえば、このサンプル リポジトリでは、問題を説明する簡単な履歴を用意しました。

$ git log --oneline --graph 
* 4a69f452 add -stuff at C and G
*   9fc8e8bf resolve E-alpha + E-beta as E-gamma
|\  
| * 95bc62e9 add -beta suffix on lines E and J
* | 465abd9e add -alpha suffix on lines A and E
|/  
* f43dc68c initial ten-line A..J file

マージ コミットは、まったく新しいバージョンのE行を導入することで競合を解決しました。

$ git show 9fc8e8bf -U0 | grep -A100 ^@@
@@@ -5,1 -5,1 +5,1 @@@
- E-alpha
 -E-beta
++E-gamma

ただし、これについてはgit log完全に説明します。リストされているコミットは、次のE行の現在の状態を説明できませんtest.txt

$ git log --oneline 4a69f452 test.txt
4a69f452 add -stuff at C and G
95bc62e9 add -beta suffix on lines E and J
465abd9e add -alpha suffix on lines A and E
f43dc68c initial ten-line A..J file

git logマージコミットを含めることができるオプションはありますか?

のような他のコマンドは、git blameその行がマージ コミットEで最後に触れられたことを示します。9fc...

$ git blame -L5,5 4a69f452 test.txt
9fc8e8bf9 (Matt McHenry 2016-12-28 16:55:10 -0500 5) E-gamma

(注: 上記の出力は git version によって生成され2.11.0ます。)

4

1 に答える 1

0

これは、log.followconfig オプションを に設定したtrue場合、または同等に--followlog コマンドに渡した場合に発生します。

このオプションのドキュメントには、「非線形履歴ではうまく機能しない」と書かれています。これが彼らの意味だと思います。:(

$ git log --oneline 4a69f452 -- test.txt
4a69f45 add -stuff at C and G
9fc8e8b resolve E-alpha + E-beta as E-gamma
95bc62e add -beta suffix on lines E and J
465abd9 add -alpha suffix on lines A and E
f43dc68 initial ten-line A..J file

$ git log --oneline 4a69f452 --follow -- test.txt
4a69f45 add -stuff at C and G
95bc62e add -beta suffix on lines E and J
465abd9 add -alpha suffix on lines A and E
f43dc68 initial ten-line A..J file
于 2017-01-03T01:54:20.313 に答える