我正在研究开源项目中的合并。
对于 repo 中的每个合并,我需要找到基础(最近的共同祖先)、两个贡献者以及生成的合并提交。
我已经知道如何获取最近的共同祖先 ( git merge-base rev1 rev2
) 和贡献者 ( git log --pretty=%P -n 1 <commit>
),但是在识别合并操作导致的提交时遇到问题。
如何在 Git 存储库中找到具有多个父级的所有提交?
我正在研究开源项目中的合并。
对于 repo 中的每个合并,我需要找到基础(最近的共同祖先)、两个贡献者以及生成的合并提交。
我已经知道如何获取最近的共同祖先 ( git merge-base rev1 rev2
) 和贡献者 ( git log --pretty=%P -n 1 <commit>
),但是在识别合并操作导致的提交时遇到问题。
如何在 Git 存储库中找到具有多个父级的所有提交?
这应该足够了(对于本地提交)
git rev-list --merges
--merges
仅打印合并提交。这与
--min-parents=2
.
这意味着 rev-list 有一些有趣的过滤器:
--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
的解析输出。