文章目录
问题重现:
我们平时开发的时候都是从主分支创建分支,然后将该分支拉取到本地进行开发,开发完成以后再将此分支合并到远程主分支。
但是一般而言,我们都是整个团队在开发,等开发完了,需要合并到远程分支的时候,远程分支已经有很多次提交(commit
)了,自己的分支已经落后主分支很多版本,切换回主分支的时候就不在最新commit
上:
git checkout origin
那么这个时候应该怎么办呢?
解决思路:
假设当前开发的分支名为:feature/dev
根据主分支(origin
)代码在本地创建新的临时分支,命名为temp
将临时分支(temp
)合并到开发分支(eature/dev
)
解决合并后的冲突
提交开发分支(feature/dev
)并push到远程仓库
后将开发分支(feature/dev
)合并到主分支(origin
)
实现:
第一步:根据主分支(origin)代码在本地创建新的临时分支,命名为temp
# 获取远程仓库origin主分支的最新代码
git fetch origin
# 根据主分支创建一个临时分支
git checkout -b temp origin
我们可以看到dev分支与temp分支是不一样的
第二步:将临时分支(temp)合并到开发分支(feature/dev)
# 可以先看下开发分支与临时分支的差别
git diff feature/dev temp
# 切换到开发分支
git checkout feature/dev
# 合并临时分到开发分支
git merge temp
我们可以看到在for_test/test_behand_merge.py
文件中有代码冲突,我们需要解决冲突后再进行下一步的操作
第三步:解决合并后的冲突
解决冲突后是这样的:
第四步:提交开发分支(feature/dev)并push到远程仓库
我们现在可以看下Git的状态:
解决冲突后提交一下:
git status
git add test_behand_merge.py
git commit -m "测试:当前分支落后主分支 --> 创建临时分支并合并到dev分支"
git push
第五步:将开发分支(eature/dev)合并到主分支(origin)
切换到主分支:
git checkout origin
我们会发现还是还是不是指向最新的提交,OK,没有关系,我们让Git指向最新的提交:
git checkout master
我们会发现当前分支落后origin/master
4个提交,OK,pull一下
# 记得pull一下
git pull
这个时间就可以做最终的合并了:
git merge feature/dev
最后push一下就ok了。