git 需要从正在做到一半时的项目中拉取一个历史提交记录的分支的方法
git 需要从正在做到一半时的项目中拉取一个历史提交记录的分支的方法
达达_泽亚 发表于8个月前
git 需要从正在做到一半时的项目中拉取一个历史提交记录的分支的方法
  • 发表于 8个月前
  • 阅读 152
  • 收藏 0
  • 点赞 0
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

问题背景:

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单独测试,和单独上线都可以顺利进行

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 0
博文 23
码字总数 1897
×
达达_泽亚
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: