0
如果一個文件的歷史記錄包含具有「有趣」衝突解決方案的合併提交,則git log
將跳過它。爲什麼是這樣,我怎麼能把這個提交包含進去?爲什麼限制路徑的'git log'忽略合併提交和有趣的衝突解決方案?
(通過「有趣」,我指的是分辨率不只是把版本從HEAD
或MERGE_HEAD
逐字。)
例如,在this sample repository,我已經準備了一個簡單的歷史,說明該問題:
$ 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
完全掩蓋了這一點。它列出了提交無法解釋在test.txt
的E
線的當前狀態:
$ 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版本2.11.0
生產。)
您正在使用哪個版本的Git的?使用2.7.4,'git的日誌--oneline 4a69f452 test.txt'顯示'9fc'提交給我。 –
加上' --cc和'git log'會查看組合diff並且應該找到改變,我不確定爲什麼默認選項是這樣的(它們似乎在一個Git版本中有所不同,當我嘗試你的例子,從你的GitHub鏈接克隆,在2.10.1中,我看到'9fc' commit。) – torek
@torek你是對的,' - cc'確實使它提交了這個提交。它被列在手冊頁的「差異格式」部分中使它聽起來好像它應該*不*影響包含在日誌中的提交! 即使在'2.10.1'中沒有'--cc',你是否得到合併提交? –