即,我有兴趣查找在两次提交中都被修改的文件(如果更容易,则在两个差异中)。对不起,如果它很简单,但我对git来说还是新手。
答案 0 :(得分:2)
<强>更新强>
来自@PaulHicks的输入(git diff
而不是git diff-tree
...感谢Paul)并绕过here所描述的错误,即| sort
这里是我更新的答案:< / p>
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)
不幸的是我正在从Windows框中输入:( ..因此无法立即检查(我必须回家试试)
我的想法是git diff-tree将生成一个文件列表,如here。
此link显示了此comm -12如何在ls
上运行。
编织两者可能有用是我的猜测
答案 1 :(得分:1)
您可以使用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)