如何找到Git存储库中具有多个父级的所有提交?

时间:2013-03-26 12:49:49

标签: git

我正在研究开源项目中的合并。

对于repo中的每个合并,我需要找到基数(最近的共同祖先),两个贡献者,以及由此产生的合并提交。

我已经知道如何获取最近的共同祖先(git merge-base rev1 rev2)和贡献者(git log --pretty=%P -n 1 <commit>),但我在识别合并操作产生的提交时遇到问题。 / p>

如何在Git存储库中找到所有具有多个父级的提交?

2 个答案:

答案 0 :(得分:1)

这应该足够了(对于本地提交)

 git rev-list --merges

git rev-list man page提及:

--merges
  

仅打印合并提交。这与--min-parents=2完全相同。

这意味着rev-list有一些有趣的过滤器:

--min-parents=<number>
--max-parents=<number>
  

仅显示至少(或最多)多次提交的提交   特别是:

     
      
  • --max-parents=1--no-merges
  • 相同   
  • --min-parents=2--merges相同。
  •   
  • --max-parents=0提供所有 root提交
  •   
  • --min-parents=3所有章鱼合并
  •   

答案 1 :(得分:1)

尝试:

git log --merges

使用适当的--pretty来解析输出。