![cover](https://img.flycat.tech/pg/202406/5ccd85c5f3a3dda551922e2a9a643c7c125.webp)
项目开发过程中提交错git分支了怎么办
在进行项目需求开发的过程中,一般情况下会从master分支单独拉一条分支出来进行开发,但是有时候因为排查问题、查看代码等一些原因需要频繁切换分支,结果开发时忘记切换回开发分支导致将代码提交到了其他分支。
比如有很多次,我将开发需求的代码都提交到了test分支,测试过程中因为本来也是使用test分支测试的,所以没有发现问题,但是最后上预发布环境的时候才发现开发分支缺少了代码,排查才发现提交错分支了,如果手动把这些更改的代码复制到开发分支,不仅效率低,而且容易出错。
不过还好发现了Git还有一个很好用的功能。
Cherry-Pick
git cherry-pick
命令的作用,就是将指定的提交(commit)应用于当前分支。
git cherry-pick <commitHash>
比如现有master和feature两个分支,分支的提交记录如下所示:
假设字母越靠前的,提交时间越早,比如feature分支中的
f
提交记录先于master分支中的g
提交记录。
现在需要将feature分支中的 f
提交记录应用到master分支,则可以使用cherry-pick命令,命令执行后的效果如下:
可以看到master分支中 d
提交记录后面多了一个 f
的提交记录。
接下来将介绍如何使用命令行执行cherry-pick的方法,以及在IDEA中使用该功能的方法。
使用命令行执行Cherry-Pick
转移单个提交记录
1、切换到需要接收提交的分支(比如master分支)
git checkout master
2、执行cherry-pick命令
git cherry-pick b4c004ad
注:其中b4c004ad是 f
提交记录对应的部分md5
3、查看当前分支的提交记录
git log
可以看到feature分支的 f
提交记录出现在了当前的master分支中。
转移多个提交记录
cherry-pick也支持一次转移多个提交记录。
git cherry-pick <hashA> <hashB>
上面命令的功能就是将hashA和hashB两个提交记录应用到当前分支。
如果想要转移的提交记录是连续的,也可以使用以下的用法:
git cherry-pick hashA..hashD
上面的命令会将hashA和hashD以及中间的所有提交记录转移到当前分支。
使用IDEA执行Cherry-Pick
1、打开Git窗口
2、切换到需要接收提交的分支(在该例子中需要将test分支中的提交记录转移到feature分支,所以图中是切换到feature分支)
3、切换feature分支后,再单击test分支,在右边的窗口中选择需要转移的提交记录,按住command键(windows用户按住ctrl键)可多选,然后点击上面的樱桃图标。
上图中选择了a、b、c三个提交记录。
点击后切换到feature分支,可以看到test分支中的a、b、c三条提交记录被成功转移到feature分支。
- 感谢你赐予我前进的力量