事情是这样的,项目的一个任务,需要早于正常发布日期发布,就需要新开一个分支,不在dev分支上操作,但是,我忘记开分支了,还有两天就要发布了,代码全部提交到了dev上了。
重新建一个分支,提交上去,会很麻烦,因为可能会有遗漏的,同事推荐使用cherry-pick,步骤如下
(1)先找到与本次任务相关的所有commit
git log --grep="example"
然后拷贝出来所有的commit号,
也可以借助webstorm 底部的Version Control的log tab里面筛选功能,来筛选所有的commit号
(2)cherry-pick所有的commit号,用空格分开,按照旧-新的提交顺序排列
git cherry-pick commit号
***注意:这种方式,cherry pick完成后,就可以直接push了
git push
(3)或者,不自动提交,需要加上-n,这样就要我们再手动commit,方便过滤不需要cherry-pick的文件
git cherry-pick -n commit号
git reset ***.js
然后
git commit -m "dfdfd"
git push
这样,就把之前push到dev分支的代码改动,push到我们新建的分支了。
但是,我发现cherry-pick,有时候会漏掉某几个地方的改动,这要在我们测试或者切换分支进行代码对比时,才会发现,所以 cherry-pick还是慎用。