当我使用<path>
参数 withgit log --stat
将日志限制为提交修改<path>
时,git<path>
在显示所选提交时将列为唯一修改的文件。相反,我希望查看为每个选定提交列出的所有修改路径。
例如:
$ echo test > a.txt
$ echo test > b.txt
$ git add a.txt b.txt
$ git commit -m test
[...]
2 files changed, 2 insertions(+), 0 deletions(-)
[...]
$ git log -n1 --stat
[...]
a.txt | 1 +
b.txt | 1 +
2 files changed, 2 insertions(+), 0 deletions(-)
$ git log -n1 --stat -- a.txt
[...]
a.txt | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
请注意git log
,带有 path 参数的第二个a.txt
表示“1 个文件已更改”,而实际上是“2 个文件已更改”。我希望 git 告诉我两者都a.txt
发生了b.txt
变化,即使我根据路径选择了提交a.txt
。
更新:@jacknagel 回答了我的问题,但事实证明他的解决方案在我的实际用例中不起作用。在我的实际用例中,我正在寻找所有修改文件的提交,包括重命名,以防两个相关项目出现分歧。我需要弄清楚一个项目中的哪些更改意味着另一个项目中的相应更改(我需要进行)。不幸的是,git
当我尝试同时使用时--full-diff
抱怨--follow
。
所以,在我的真实情况下,我正在尝试运行:
git log --stat --follow -- a.txt
在这种情况下有效的解决方案是:
git log --format='%H' --follow -- a.txt | xargs git show --stat -C