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

git merge --allow-unrelated-histories 合并无共同祖先

两个独立初始化的仓库合并时会因「refusing to merge unrelated histories」被拒;该选项显式放行,常用于把旧仓库历史并入新仓库。

Git 与协作速查开发更新于 2026-10-12
用途允许合并没有共同祖先的历史
语法git merge --allow-unrelated-histories <分支>
默认行为Git 2.9 起拒绝此类合并

常用示例

常用示例
git remote add legacy /srv/git/legacy.git
git fetch legacy
git merge --allow-unrelated-histories legacy/master
git log --graph --oneline -20
合并后两个历史在同一仓库共存;如需保持单一线性历史,改用 rebase --onto 把提交接到新根上更干净。

易错点

  • 合并结果容易出现同名文件冲突(如两个 README),需要人工逐文件确认保留哪份
  • 此选项只解决「允许合并」,不解决目录结构冲突;迁移前先规划目标目录布局

数据来源与参考

  • Git 官方文档:git-merge(--allow-unrelated-histories)
  • Git 2.9 Release Notes
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌