[英]Show summary of conflicting diff part of merges in git log
我正在尋找一種方法來僅顯示git日志中合並提交的沖突部分,最好與我從git log --numstat
獲得的歷史記錄中的所有其他(非合並)diff一起git log --numstat
。 有一個類似於我的問題的問題已經得到回答: 顯示合並中的沖突差異部分 。 我可以修改一個答案
git diff hash hash^1 hash^2 --numstat
但這只允許我顯示一次提交的差異,而不是嵌入歷史記錄中。 最終,我想從日志(插入的總和-刪除的總和)中重建每個文件中的行數,只要沒有合並沖突,此方法現在就可以正常工作了。
如果我使用完整的差異進行合並(例如,使用git log --numstat -m
),則我不會將差異傳遞給直接父級,而是已經包含了一些在較早的非合並提交中報告的更改的差異,這弄亂了我對插入/刪除的計數。
我知道我可能會從git log
詢問如此特殊的用例。 我可以使用上面鏈接的答案來解決,但這只是更多工作。
任何幫助表示贊賞。
最終,我想從日志(插入的總和-刪除的總和)中重建每個文件中的行數,只要沒有合並沖突,此方法現在就可以正常工作了。
如果我正確理解目標是找到某個提交的所有文件的行數,則有一種方法根本不需要重構:
git diff-tree --numstat 4b825dc642cb6eb9a060e54bf8d69288fbee4904..$COMMIT
其中$COMMIT
是所需的提交哈希。
這使用diff-tree將空樹與所需提交的樹進行比較,並產生直接匯總的統計信息。
也可以將其放入循環中,以獲取完整歷史記錄中所有文件的行數:
$ for COMMIT in $(git rev-list master)
do
git diff-tree --numstat 4b825dc642cb6eb9a060e54bf8d69288fbee4904..$COMMIT
done
也可以使用通常的后綴-- file1.txt file2.txt ...
將其限制為特定文件。
作為參考,空樹散列是將空字符串作為樹對象散列時得到的:
$ echo -n | git hash-object -t tree --stdin
4b825dc642cb6eb9a060e54bf8d69288fbee4904
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.