如何在没有看到合并的情况下git责备

时间:2011-03-13 14:48:10

标签: git blame

如果我有一个历史记录如下的文件:

----A----B
     \    \
      C----D----E

我从E那里负责,然后我想看看修订版B& C,但我并不关心D,因为那是合并。

有没有办法可以做到这一点?我想我正在寻找某种--no-merges选项来git责备,但我没有在manual中看到一个。

2 个答案:

答案 0 :(得分:4)

实际上,你关心D.考虑这种情况:

in commit B:
2) banana
3) coconut
4) domino     // conflicts with C

in commit C:
2) banana
3) coconut
4) elephant   // conflicts with B

在提交D中,我们解决冲突:

in commit D:
2) banana
3) coconut
4) domino-elephant

请注意,在D中,出现一条未显示在B或C中的行。如果忽略合并,您将永远不会看到它,并且您永远无法分辨第4行来自何处​​,这是坏。

答案 1 :(得分:0)

一种替代方法是使用git log -L start,end:filename,它显示(默认情况下是完整的)行的历史记录(在start中的endfilename之间编号)。您也可以使用git log -L /regex/,/regexend/:filename通过正则表达式而不是行号来标识行。从本质上讲,在许多情况下,您可能会获得与git blame不同的结果,但是与git blame相比,我能够更方便地找到“真实”(即非合并)更改。