git diff --numstat with --name-status

时间:2016-02-17 09:42:05

标签: git git-diff

有没有办法在一次运行中合并运行git diff --numstatgit diff --name-status的输出?
我的问题是,如果我只使用--numstat,那么我不知道是否只是在文件中添加了一些新行,或者文件是否全新。使用--name-status时,如果文件是新的,我会得到信息,但缺少关于行修改的统计信息。

目前我的解决方法是单独运行两个命令,然后通过PowerShell脚本合并该输出,但由于repo相当大,我希望首先获得所需的输出。在此先感谢您的帮助!

3 个答案:

答案 0 :(得分:3)

您可以合并--numstat--summary标志;

git diff --numstat --summary

请注意,新文件不能位于“未暂存”区域;所以假设您使用了“git add”和“git rm”,那么您的git状态将如下所示:

# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       new file:   b
#       deleted:    a

然后使用

git diff --cached --numstat --summary

会给你:

540  0   b
0    3   a
 create mode 100644 b
 delete mode 100644 a

注意:您可以将--numstat--summary标记与git diffgit diff --cachedgit show和可能是其他命令。

答案 1 :(得分:0)

您可以使用一些不同的标志来实现它:

git log --stat --summary

以下是此命令的屏幕截图。每次提交后,您都拥有每个文件和摘要的所有信息。

enter image description here

答案 2 :(得分:0)

您可以使用--diff-filter=A选项仅获取新文件,并使用--diff-filter=a进行其他更改:

git diff --numstat --diff-filter=A
git diff --numstat --diff-filter=a