回答
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