git强制覆盖master分支

在开发中,通常会保持两个分支master分支和develop分支,但是如果因为develop上面迭代太多而没有及时维护master,最后想丢弃master而直接将测试确认过的develop强推到master,该怎么操作呢?

网上搜了一下,但是真正自己使用起来却又暴露出各种问题。因此,做如下总结分享,希望对遇到同样问题的人用帮助。

场景一:master下有a.txt文件,develop下有a.txt(和master保持一致),b.txt文件(追加文件),c/c.txt文件(追加文件夹和文件)。
场景二:master下有a.txt文件,develop下有a.txt(追加自己内容),b.txt文件(追加文件),c/c.txt文件(追加文件夹和文件)。
场景三:master下有a.txt文件(追加自己内容),develop下有a.txt(追加自己内容),b.txt文件(追加文件),c/c.txt文件(追加文件夹和文件)。其中master的a.txt和develop的a.txt不存在竞合。
场景四:master下有a.txt文件(追加自己内容),develop下有a.txt(追加自己内容),b.txt文件(追加文件),c/c.txt文件(追加文件夹和文件)。其中master的a.txt和develop的a.txt存在竞合。

 

网上查找了一个操作步骤,如下:

 

1. 切换到develop分支下,并保证本地已经同步了远端develop的最新代码

git checkout develop
git pull

2. 把本地的develop分支强制(-f)推送到远端master

git push origin develop:master -f

3. 切换到旧分支master

git checkout master

4. 下载远程仓库最新内容,不做合并

git fetch --all

5. 把HEAD指向master最新版本

git reset --hard origin/master

 

再执行上面的场景三和场景四,顺利执行完,切换到sourcetree上面,也不会再提示有竞合需要手动merge的操作,也没有需要你push和pull的东西,完美。

分析上面的操作,虽然核心操作是步骤2,因为经过步骤2,远端的master已经被你用develop强制替换了,目的是达到了,你完全可以在本地另起一个路径再clone一份master进行管理。

但是,在经过了改良后的操作后,你完全可以不丢弃已经使用很习惯了的路径,何乐而不为呢。再说改良后的修正点核心思想:就是获取远端的GitHub文件信息,而不做合并,然后直接丢弃本地旧的代码,直接获取远端分支的代码覆盖到本地,OK,问题解决,希望对大家有用。

 

转载:git强制覆盖master分支

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值