首页/开发/Git 与协作速查/git merge-base 找共同祖先
合并变基与冲突71 条

git merge-base 找共同祖先

计算两个(或多个)提交的合并基础,即分叉点;用于确认分支从哪里分开、构造 rebase --onto 范围与排查合并范围异常。

Git 与协作速查开发更新于 2026-10-12
用途求分叉点 / 共同祖先
语法git merge-base <A> <B>
常用变体--is-ancestor 判断祖先关系;--fork-point 找 fork 点

常用示例

常用示例
git merge-base main feature/login
git log --oneline $(git merge-base main HEAD)..HEAD
git merge-base --is-ancestor v1.0 main && echo 'v1.0 已包含在 main'
合并基础是理解三方合并的关键:冲突标记中的 base 版本就是它提供的共同祖先内容。

易错点

  • 分支互相合并多次后 merge-base 的结果可能出乎意料,别只凭它推断「新提交有哪些」
  • --is-ancestor 用退出码表达结果(0 为是),脚本里要显式判断而不是看输出

数据来源与参考

  • Git 官方文档:git-merge-base
  • Pro Git 2nd Edition · 7.8 高级合并
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌