Git无法合并无关分支:如何将webapp分支合并至development分支
这种情况我碰到过好多次,核心原因就是你的本地webapp分支和远程development分支没有共享任何提交历史——毕竟你是离线创建的分支,和远程仓库的更新完全脱节了,Git根本不知道该怎么把两个完全独立的代码历史捏到一块儿。别慌,照着下面的步骤操作就能解决:
步骤1:先让本地development分支同步远程最新代码
首先得确保你现在已经联网了,然后:
- 切换到
development分支:git checkout development - 拉取远程
development的最新代码,让本地分支和远程保持一致:git pull origin development
步骤2:合并webapp分支到development(两种可选方法)
因为你提到功能在独立文件夹、无冲突,所以两种方法都能轻松搞定,选你习惯的就行:
方法一:直接合并(保留双历史,自动生成合并提交)
这种方法最直接,Git会帮你创建一个合并提交,把两个独立的历史连接起来:
- 确保你还在
development分支上,执行合并命令,加上允许无关历史的参数:git merge webapp --allow-unrelated-histories - 因为没有冲突,Git会自动打开编辑器让你写合并提交的说明,保存退出就行。
- 最后把合并后的
development分支推送到远程:git push origin development
方法二:变基合并(把webapp的提交接到development历史后面)
如果你不想保留两个独立的历史,想让所有提交看起来是线性的,可以用变基:
- 切换到
webapp分支:git checkout webapp - 把
webapp的所有提交变基到远程最新的development分支上,同样加上允许无关历史的参数:git rebase origin/development --allow-unrelated-histories - 变基完成后,切回
development分支:git checkout development - 现在合并
webapp分支就是快进合并,不会产生新的提交:git merge webapp - 最后推送到远程:
git push origin development
小提醒
- 操作前一定要用
git status检查,确保本地没有未暂存、未提交的修改,不然可能会搞乱你的代码。 - 如果你之后还需要
webapp分支,可以保留;如果不需要了,合并后可以用git branch -d webapp删除本地分支。
内容的提问来源于stack exchange,提问作者user6827707
相关产品推荐
相关产品推荐

