f1---f2 - short term branch "feature1"
/ \
h--h--h---h--h1--h2- - long term branch "hofix"
/ \ \ \
/ \ \ \
m----m------m---m------m-- - long term branch "master"
| |
1e1e1e 2f2f2f
我合并分支与2提交差异(15个文件完全改变)。 跑了:
$ git show --pretty="format:" --name-only 1e1e1e..2f2f2f
我从我的项目中收到了超过42 000个文件。为什么呢?
预期:我将使用f1,f2,h1,h2提交显示差异
P.S。可能是因为“合并分支'来源/ 0411-修补程序'”提交?
答案 0 :(得分:4)
1e1e1e..2f2f2f
表示:
2f2f2f
1e1e1e
(请参阅SPECIFYING RANGE)中的“gitrevisions
”
如果这些SHA1引用了两个提交合并,则您有:
1e1e1e
|
x--x--x
\
Z
/
y--y--y
|
2f2f2f
这将为您提供所有“y
”提交中的所有文件,这些文件可能会进行到第一次提交,这意味着您将获得所有文件。
但是,由于git diff
不进行一系列提交(而不是git show
),您可以尝试,例如“How to “git show
” a merge commit with combined diff output” :
git diff --name-only 1e1e1e..2f2f2f
或者只使用合并SHA1'Z
',如“List all modified files in git merge commit - even the fast forwarded”:
git log -m -1 --name-only --pretty="format:" <Merge SHA>