如何正确将Bitbucket仓库代码合并到GitHub对应仓库
报错原因
触发该报错的核心是执行pull命令时,本地工作区存在未解决的冲突残留、或处于未完成的合并中断状态,Git会强制终止当前合并操作。另外你直接执行git pull <仓库地址>未指定目标分支的写法,会默认拉取远端默认分支的所有提交,极易引入无关代码触发额外冲突。
标准操作流程
操作前先确认你本地已经克隆了GitHub端的对应仓库,所有命令都在该本地仓库路径下执行:
- 第一步:清理本地异常状态,回到干净的工作节点
# 切换到你之前创建的gh分支 git checkout gh # 中止所有残留的未完成合并操作 git merge --abort # 执行状态检查,确认输出无"unmerged paths""Changes not staged for commit"类提示,工作区完全干净再继续 git status
- 第二步:添加Bitbucket仓库为本地远端源
# 给Bitbucket仓库配置别名bb-repo,后续无需重复输入完整仓库地址 git remote add bb-repo https://{{替换为你的Bitbucket仓库实际地址}}.git # 拉取Bitbucket仓库所有分支的最新提交到本地,不会改动你当前的工作区文件 git fetch bb-repo
- 第三步:执行分支合并
根据你要合并的Bitbucket端实际分支选择对应命令:- 如果你要合并的是你在Bitbucket端创建的
bb分支,执行:
git merge bb-repo/bb- 如果你要合并的是Bitbucket端的master主干分支,执行:
git merge bb-repo/master - 如果你要合并的是你在Bitbucket端创建的
- 第四步:处理合并冲突
执行merge后如果提示文件冲突,直接打开标记为冲突的文件,手动整合两边的代码逻辑(冲突段Git会用<<<<<<<=======>>>>>>>标记分隔两侧代码)。所有冲突处理完成后,执行以下命令标记冲突解决并完成合并提交:
# 将所有处理完的冲突文件加入暂存区,也可以逐个指定文件路径 git add . # 提交合并结果 git commit -m "merge: sync code from Bitbucket repository"
- 第五步:推送合并结果到GitHub
确认本地代码运行、逻辑验证无误后,把合并完成的gh分支推送到GitHub远端即可:
git push origin gh
操作注意事项
- 后续需要再次同步两个平台的代码时,不需要重复添加
bb-repo远端,只需要先执行git fetch bb-repo拉取Bitbucket的最新提交,再合并对应分支即可。 - 所有拉取、合并操作执行前,必须保证本地工作区干净,没有未提交的本地改动、没有中断的合并/变基流程,否则会反复触发你之前遇到的未合并文件报错。
- 尽量不要直接用
git pull <完整仓库地址>的写法做跨仓库合并,pull是fetch+merge的组合操作,不指定分支时的拉取逻辑不可控,提前加远端、先fetch再合并的流程更稳定,也方便排查问题。
内容的提问来源于stack exchange,提问作者haydnD
相关产品推荐
相关产品推荐

