2016-02-17 140 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