簡體   English   中英

在git日志中顯示合並沖突的差異部分的摘要

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM