我如何找到两个git提交之间的交集?
也就是说,我有兴趣找到在两次提交中都修改过的文件(或者如果更容易的话,可以用两个差异文件)。 不好意思,如果这很简单,但我对git仍然很陌生。
更新
在@PaulHicks( git diff
而不是git diff-tree
...感谢Paul)的输入之后并绕过这里描述的错误ie | sort
这里| sort
我的更新答案:
comm -12 <(git diff --no-commit-id --name-only -r 3fe29472016343 | sort) <(git diff --no-commit-id --name-only -r 9fd796b1998bb7d5 | sort)
老答案我不相信有一个开箱即用的命令来做你想做的事情。 但是,如果你在* nix平台上,你可以试试这个:
comm -12 <(git diff-tree --no-commit-id --name-only -r COMMIT1SHA1key) <(git diff-tree --no-commit-id --name-only -r COMMIT2SHA1key)
不幸的是我从窗口框打字:( ..hence不能检查这一马上(我必须回家尝试)
我的想法是git diff-tree会产生一个像这里一样的文件列表。
这个链接显示了这个comm -12如何在ls
。
编织两者都可能是我的猜测
您可以使用git diff --name-only sha1^ sha1
获取单个提交中更改的文件列表。 所以你可以在一个以两个提交SHA-1作为参数的脚本中执行此操作:
git diff --name-only $1^ $1 | sort > file1
git diff --name-only $2^ $2 | sort > file2
comm -12 file1 file2
rm file1 file2
或者,如果您在linux / unix上使用bash,则可以使用@ Vikram答案中的妙用来避免临时文件:
comm -12 < (git diff --name-only $1^ $1) < (git diff --name-only $2^ $2)
链接地址: http://www.djcxy.com/p/26663.html
上一篇: How do I find intersections between two git commits?
下一篇: How to Gerrit Trigger builds only for a certain part of the project