我正在做一项研究,研究开源项目中的合并。
对于repo中的每个合并,我需要找到基(最近的共同祖先),两个贡献者,以及最终合并的提交。
我已经知道如何获得最近的共同祖先(git merge-base rev1 rev2
)和贡献者(git log --pretty=%P -n 1 <commit>
),但是我在确定合并操作导致的提交时遇到了问题。
我怎么能找到所有的提交,有一个以上的父在Git存储库?
这应该足够了(对于本地提交)
git rev-list --merges
git rev-list
手册页提到:
--merges
只打印合并提交。这与
--min-parents=2
完全相同。
这意味着rev-list有一些有趣的过滤器:
--min-parents=<number>
--max-parents=<number>
只显示至少(或最多)有100次提交的提交。
特别是:
--max-parents=1
与--no-merges
相同,--min-parents=2
与--merges
相同。--max-parents=0
给出所有根提交和--min-parents=3
all octopus merged .
尝试:
git log --merges
使用适当的--pretty
来解析输出