git 需要从正在做到一半时的项目中拉取一个历史提交记录的分支的方法

问题背景:

2017.7.5号我完成了功能A, 然后合入自己的分支让QA测试。

7.6号做同一个项目的功能C之前,从同事的分支(非master分支)中拉取了功能B依赖的由她完成的功能C合入自己的分支,当功能B快被我开发完时,QA告诉我功能A不能与功能B/C同时上线,需要单独测试功能A并单独上线。此时由于功能B和部分功能C都已经合入自己的分支,要想单独上线功能A,则需要将功能A分离出来合入master分支。

解决方法;

经过一番折腾,总结出解决此类问题的如下方法:

1,创建新的分支zhongweichang, 去自己分支下找到提交记录

2,点击需要回滚的提交记录后面的“Cherry Pick”, 弹框如图:选中目标分支为zhongweichang, 如果提交记录中的内容和zhongweichang分支的没有冲突时,然后点击确认按钮,即可将功能A单独拉出来合入zhongweichang分支,将zhongweichang分支合入master即可。此时我们从图中也可以看出,相应的提交记录id为:6ae9b71

如果提交记录中的内容和zhongweichang分支有冲突时,会提示无法合入,此时要通过第3步解决。

单独

3,如果提交记录中的内容和zhongweichang分支有冲突时,可点击相应提交记录后台的下载图标(如下图),然后复制弹出的指令,复制上图箭头5所指的指令:git fetch ssh://zhongweichang@****:******/def-cf refs/changes/19/2049719/1 && git checkout FETCH_HEAD,然后在linux新拉取的zhongweichang分支项目环境下执行,

 

或着复制第2步图中箭头5所指的指令:git checkout zhongweichang && git cherry-pick 6ae9b71,然后在linux项目环境下执行。

4,当执行第3步时,可能会出现如图所示错误

此时如下方式解决:

1)基于本次提交创建一个临时分支.

git branch temp 6ae9b71

2)然后merge到我当前工作分支.

git merge temp

3)删除临时分支

git branch -d temp

然后提交代码,如果有冲突,则在本地环境解决冲突即可,这样功能A也就成功的被单独合入zhongweichang分支,QA单独测试,和单独上线都可以顺利进行

转载于:https://my.oschina.net/veichang/blog/1189218

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值