问题背景:

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

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

解决方法;

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

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

怎么从gitee拉取项目到本地仓库 怎么从git上拉取项目_git

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

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

怎么从gitee拉取项目到本地仓库 怎么从git上拉取项目_开发工具_02

单独

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

怎么从gitee拉取项目到本地仓库 怎么从git上拉取项目_linux_03

 

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

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

怎么从gitee拉取项目到本地仓库 怎么从git上拉取项目_linux_04

此时如下方式解决:

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

git branch temp 6ae9b71

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

git merge temp

3)删除临时分支

git branch -d temp

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