2016-02-17 103 views
4

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

目前我的解决方法是分别运行两个命令,然后通过PowerShell脚本合并该输出,但由于回购比较大,我希望首先获得所需的输出。预先感谢任何帮助!

回答

3

你可以结合--numstat--summary标志;

git diff --numstat --summary 

请注意,新文件不能位于“unstaged”区域;因此,假设你用 “git的add” 和 “混帐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 diff,git diff --cached,git show和其他可能的命令。

+0

谢谢! 我认为--numstat与--summary似乎是可行的,但说实话,我希望在一行中获取每个文件的数据(或者完全指定一个自定义格式),以便输出格式不会改变,解析脚本会更简单:) – DAXaholic

1

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

git log --stat --summary 

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

enter image description here

+0

谢谢,但我认为它不会为两个单独的提交工作,我仍然无法分辨是否添加文件或只是插入 – DAXaholic