我正在研究开源项目中的合并研究。如何查找Git存储库中拥有多个父项的所有提交?
对于回购协议中的每个合并,我需要找到基础(最近的共同祖先),两个贡献者以及最终的合并提交。
我已经有一个如何获得最近的共同祖先(git merge-base rev1 rev2
)和贡献者(git log --pretty=%P -n 1 <commit>
)的想法,但我有问题来识别由合并操作导致的提交。
如何查找在Git存储库中拥有多个父代的所有提交?
我正在研究开源项目中的合并研究。如何查找Git存储库中拥有多个父项的所有提交?
对于回购协议中的每个合并,我需要找到基础(最近的共同祖先),两个贡献者以及最终的合并提交。
我已经有一个如何获得最近的共同祖先(git merge-base rev1 rev2
)和贡献者(git log --pretty=%P -n 1 <commit>
)的想法,但我有问题来识别由合并操作导致的提交。
如何查找在Git存储库中拥有多个父代的所有提交?
这应该是足够的(对于本地提交)
git rev-list --merges
--merges
仅打印合并提交。这与
--min-parents=2
完全一样。
这意味着转列表有一些有趣的滤镜:
--min-parents=<number>
--max-parents=<number>
只显示提交具有至少(或至多)许多提交。
特别是:
--max-parents=1
相同--no-merges
,--min-parents=2
相同--merges
。--max-parents=0
给所有根犯和--min-parents=3
所有章鱼合并。
尝试:
git log --merges
与适当--pretty
解析输出。
嗨VonC,谢谢你的回答。我的第一条命令出现了这个错误:“致命: - 没有MERGE_HEAD的组合?” – macrobug 2013-03-26 15:20:16
@macrobug对不起,这是一个错字:它是'--merges',而不是'--merge'。 – VonC 2013-03-26 15:33:11