在开发中,通常会保持两个分支test分支和develop分支,但是如果因为develop上面迭代太多而没有及时维护master,最后想丢弃master而直接将测试确认过的develop强推到master,该怎么操作呢?
- 切换到develop分支下,并保证本地已经同步了远端develop的最新代码。
1
2
git checkout develop
git pull
- 把本地的develop分支强制(-f)推送到远端master。
1
git push origin develop:
test-f
- 切换到旧分支master。
1
git checkout
test - 下载远程仓库最新内容,不做合并。
1
git fetch --all
- 把HEAD指向master最新版本。
1
git reset --hard origin/
test
再执行上面的场景三和场景四,顺利执行完,切换到sourcetree上面,也不会再提示有竞合需要手动merge的操作,也没有需要你push和pull的东西,完美。
分析上面的操作,虽然核心操作是步骤2,因为经过步骤2,远端的master已经被你用develop强制替换了,目的是达到了,你完全可以在本地另起一个路径再clone一份master进行管理。
但是,在经过了改良后的操作后,你完全可以不丢弃已经使用很习惯了的路径,何乐而不为呢。
再说改良后的修正点核心思想:就是获取远端的GitHub文件信息,而不做合并,然后直接丢弃本地旧的代码,直接获取远端分支的代码覆盖到本地,OK,问题解决,希望对大家有用。
原文链接:Git强制覆盖master分支