有这样一种场景:
我和同事A合作开发同一个功能模块。我们从 dev
分支分别 checkout
出一个自己的分支来进行开发,完成后再合并到 dev
分支上去进行测试。
可能出现的情况是,我们同时提交代码到 dev
分支上,然后出现了冲突的情况。将自己的分支合并到 dev
分支后,结果在执行 git push
的时候却提交不上去了:
1 | ➜ git push origin dev:dev |
错误信息中提示需要先执行 git pull
拉取最新代码,但执行后发现并没有代码被拉取下来。
遇到这种情况的时候,可以采用强制覆盖法来实现代码的合并提交。
例如我当前的开发分支为 test
,测试分支 dev
。
拉取远端分支:
git pull origin dev:dev
合并我的开发分支到本地
dev
分支:
1 | git checkout dev |
- 然后将
dev
提交到远端结果报上面的错误
解决方法:
核心思路是:通过拉取远端的 origin/dev
分支强制覆盖本地的 dev
分支,然后再执行分支合并,最后将本地的 dev
分支提交到远端。
1 | git checkout dev |
这样操作后,会将本地的 dev
分支拉取为远端的最新提交。
然后再执行合并的操作就不会出现冲突的情况了。
1 | git merge test |