为什么路径受限';git日志';是否忽略具有有趣冲突解决方案的合并提交?
如果一个文件的历史记录包含一个合并提交和一个“有趣的”冲突解决方案,为什么路径受限';git日志';是否忽略具有有趣冲突解决方案的合并提交?,git,merge,git-log,merge-conflict-resolution,git-merge-conflict,Git,Merge,Git Log,Merge Conflict Resolution,Git Merge Conflict,如果一个文件的历史记录包含一个合并提交和一个“有趣的”冲突解决方案,git log将跳过它。为什么会这样?我如何才能将该承诺包括在内 (所谓“有趣”,我指的是一种解决方案,它不仅仅是从HEAD或MERGE\u HEAD一字不差地获取版本。) 例如,在中,我准备了一个简单的历史记录来说明问题: $ git log --oneline --graph * 4a69f452 add -stuff at C and G * 9fc8e8bf resolve E-alpha + E-beta as
git log
将跳过它。为什么会这样?我如何才能将该承诺包括在内
(所谓“有趣”,我指的是一种解决方案,它不仅仅是从HEAD
或MERGE\u 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
完全掩盖了这一点。它列出的提交无法解释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日志包含合并提交
其他命令,如git-burn
,确实显示上次在9fc…
合并提交中触摸了E
行:
$ git blame -L5,5 4a69f452 test.txt
9fc8e8bf9 (Matt McHenry 2016-12-28 16:55:10 -0500 5) E-gamma
(注意:上述输出是由git版本
2.11.0
生成的)如果您将日志设置为true
或将--follow
传递到log命令,则会发生这种情况
该选项的文档称其“在非线性历史上不起作用”。我想这就是他们的意思(
您使用的是哪个版本的Git?使用2.7.4,Git log--oneline 4a69f452 test.txt
为我显示了9fc
提交。添加--cc
和Git log
将查看组合的差异,并应找到更改。我不确定为什么默认选项是这样。(在不同的Git版本之间,它们似乎有点不同,当我在2.10.1中尝试从GitHub链接克隆的您的示例时,我看到了9fc
commit。)@torek您是对的,--cc
确实让它选择了提交。尽管它被列在“差异格式”中手册页的一部分,听起来似乎不应该影响日志中包含的提交!您是否在2.10.1
中获得了合并提交,即使没有--cc
?我确实在2.10.1中看到了提交,没有--cc
。(我必须显式地git签出something-我想这是gamma
-首先,这样git才能找到文件。)顺便说一句,看看-看起来好像在2.6.0之前,你必须使用显式的-m
。我也不确定为什么我自己没有--cc
看到它,因为没有各种选项之一,git就有这个功能“忽略合并”标志集。啊,-m
也会让合并提交出现在我的面前。这些选项出现在手册页的“差异格式”部分,这真是误导人……我说过了吗?:)
$ 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