场景:
我的远程仓库中有两条分支,一条是主分支 dev ,一条是我自己的开发分支 llf。我的本地仓库中只有一条主分支 llf,平时提交代码都是在这条分支上,这条分支上的所有更新将会 push 到远程分支 llf 上。现在,我的远程 llf 分支显示:与 dev 主分支相比,领先1个 commit,落后1个commit。
需求:
将远程 dev 主分支上更新的内容,合并入远程 llf 分支,方便在远程 llf 分支上继续进行后续的提交。
解决:
git branch test
(当前在本地分支 llf 上)在本地新建 test 分支。本地 llf 分支与远程 llf 分支的内容全部一样,这里新建的 test 分支是为了保留 llf 分支上的所有内容。git reset --hard origin/dev
(当前在本地分支 llf 上)将远程主分支 dev 上的代码强制覆盖到当前本地分支(本地主分支 llf )上。git checkout test
切换本地分支为 test 分支。git rebase llf
(当前在本地分支 test 上)将 test 分支上的内容 rebase 到本地主分支 llf 上。关于git rebase
的相关原理可以参考这篇文章:Git分支管理技巧-使用rebase让你的分支笔直生长,写的非常好。git checkout llf
将本地分支切换为 llf 主分支。git merge test
将 test 分支上的内容合并入 llf 分支。由于没有不同于 test 的提交,merge 操作不会产生多余的 merge commit,这种方式会让分支图变得非常整洁美观。git branch -d test
删除没用的 test 临时分支。
版权归原作者 月光晒了很凉快 所有, 如有侵权,请联系我们删除。