回答
git bisect
,正如另一個答案中所建議的那樣,對於追蹤哪個提交引入了一個錯誤並且很快就能找到您的問題非常有用。然而,合併提交可能是錯誤的合併提交,無論如何,直接回答您的問題可能會很有趣。
首先,你應該找到對象名稱合併的(即SHA1總和)提交你有興趣,也許git log --graph --pretty=oneline
或gitk
- 讓我們說,這個合併提交的對象名與d8fa
開始的這個例子。
在git中,提交是根據樹的完整快照而不是對樹的更改來定義的,並且對於與兩個(或更多)父級合併爲任何其他提交,這是真實的。所以,關於合併提交更改內容的最明顯的問題可能是「關於此合併的每個父項有何變化?」你可以參考第一父爲d8fa^1
並且第二親爲d8fa^2
,所以你可以看到哪些文件對於改變每個:
git diff --stat d8fa^1 d8fa
...和:
git diff --stat d8fa^2 d8fa
或者你可以看到這些都一氣呵成有:
git whatchanged -1 -m --stat d8fa
(你可以改變--stat
到-p
看到完整的diff,而不是diffstat的wi第git whatchanged
,或者只是將--stat
與git diff
省略。如果你只是想看到一個文件的差異對一個家長,你可以做git diff d8fa^1 d8fa -- README.txt
,例如)
在大多數情況下,這種輸出可能不是很有趣 - 這將主要是它是在一個父引入的更改但不是其他。但是,檢查git show d8fa
的輸出也是值得的 - 如果合併引入的變化似乎不在父代中,有時稱爲evil merge,這將僅顯示補丁作爲其輸出的一部分。
最好的辦法是將bug描述成測試,然後使用git bisect
來告訴你哪個更改引入了錯誤。如果你不使用自動化測試,它會更難(不會自動化),但它會告訴你引入錯誤的具體變化。
假設項目中的人善於溝通變化很小(是一件事)和描述性(描述哪一件事情是好的),那麼確定究竟是什麼東西的努力是微不足道的。
- 1. 從新創建的分支合併回主分支合併所有文件?
- 2. 主提交然後與另一個分支合併
- 3. 如何退出Mercurial的合併,然後再與該分支重新合併?
- 4. 從衍合另一個分支,然後合併到主合併後的另一分支
- 5. 合併分支'主'
- 6. 將多個分支合併到所有文件的主文件中
- 7. VSTS合併的Git分支孫子到主後子分支已合併到主
- 8. 列出主設備後面的所有遠程分支
- 9. 是否可以合併另一個分支到我的,然後合併到主
- 10. Mercurial:列出所有未分支分支
- 11. 合併並推送所有git分支
- 12. 爲什麼應用到主分支雖然我沒有合併
- 13. 分支壁球合併爲主,併合並回分支
- 14. 合併(沒有分支)到主
- 15. GIT重置分支並刪除合併後的所有更改
- 16. 如何從主分支(Github)中取出合併分支?
- 17. GIT合併後我仍然有老分支
- 18. 合併遠程分支時保留所有文件
- 19. 比較所有功能分支與主
- 20. SVN:自動檢查是否從分支所有變化與主幹合併
- 21. 主站包含將主站合併到分支後的分支更改
- 22. 主人合併到工作分支即使我合併工作分支到主
- 23. 流分組由一個字段然後合併所有其他
- 24. 2分支主分支 - 合併分支1回到主分支並使用分支2中的代碼?
- 25. 將分支合併到主幹。更改分支的主幹
- 26. 如何列出特定分支中的所有更改文件?
- 27. 合併成主分支後刪除輔助分支 - 所有貢獻都將保留嗎?
- 28. 與github合併分支
- 29. 無法與分支合併
- 30. Git與子分支合併
也許這個問題的答案可以幫助你? http://stackoverflow.com/questions/424071/how-do-i-list-all-the-files-for-a-commit-in-git – Makis 2009-12-26 20:49:43