能否基于指定提交对作为公共基底合并Git分支?
合并独立Git仓库:将theirs合并到ours
这种场景其实挺常见的——俩仓库看似完全独立,但本质上theirs是从ours的工作副本衍生出来的,只是没共享Git历史。要搞定合并,核心就是让Git允许处理无关联的历史记录,具体操作步骤我给你拆解清楚:
先切换到本地
ours仓库的目录,把theirs仓库添加为远程仓库:git remote add theirs <their repository path>这里的
<their repository path>可以是本地文件路径(比如/Users/you/projects/theirs),也可以是远程仓库的URL(比如git@github.com:someone/theirs.git),按需替换就行。接着执行拉取合并操作,因为俩仓库历史无关联,必须加上
--allow-unrelated-histories参数来让Git放行这次合并:git pull theirs <their branch> --allow-unrelated-histories把
<their branch>换成你要合并的theirs仓库里的具体分支名,比如main或者master。如果合并时出现冲突(比如俩仓库对同一个文件做了不同修改),Git会暂停合并并提示你处理冲突。你只需要打开冲突文件,手动调整内容到你想要的状态,然后执行:
git add <冲突文件名> git commit这样就能完成冲突解决和合并提交了。
另外还有个替代方案,要是你不想添加远程仓库,也可以直接fetch后合并:
git fetch <their repository path> <their branch> git merge FETCH_HEAD --allow-unrelated-histories
效果和前面的方法一致,只是添加远程仓库的方式更方便后续和theirs仓库同步更新。
内容的提问来源于stack exchange,提问作者Steve
相关产品推荐
相关产品推荐

