我對你的最終目標有些困惑,但我想我可以提供一個答案。
如果您想在合併發生衝突時得到一個很好的更改報告,即所有內容仍未提交,則應使用git status --porcelain
。它給出了一個很好的,機器可讀的所有文件及其狀態列表(包括合併衝突狀態),並且有詳細記錄的in the manpage。根據您的使用情況,您甚至可以使用git merge --no-commit
以確保在繼續(提交)之前有機會檢查合併結果。您還可以使用git diff HEAD --numstat
來獲取按文件添加/刪除的行數的機器可讀報告。
如果你要檢查的事後合併,這是一個非常不錯的使用情況git diff-tree
:
git diff-tree -c --numstat <commit>
的-c
它告訴給差異合併提交對陣雙方家長和--numstat
讓你一個不錯的機器可讀的輸出像以前一樣。
最後,如果您想要生成非常詳細的衝突報告,您可以通過-p
而不是--numstat
,爲您提供完整的補丁輸出。這是您在gitk
中會看到的一種補丁,每行開頭有兩個字符,表示該行是否相對於每個父代添加/刪除。僅來自一個父代的更改只有一個符號(例如'+ '
,' -'
,爲使空格可見而添加的引號),而作爲衝突解決方案的一部分手動更改的行將有兩個(--
,++
)。如果你真的需要,你可以自己解析它。 (不幸的是,我不認爲在合併提交時類似於--numstat
。)
'git diff --numstat branchA branchB'可用於機器消耗 – knittl 2011-04-12 16:28:10