Git摘樱桃:一口吃掉精华代码

121 阅读2分钟

场景

今天在修改一个bug,在快修改完时发现,写错分支上了。写错的这个分支平时是用来研究一些新特性的,忘记切换回来,这时如何解决,第一个想到了git的摘樱桃,即cheery-pick

cherry-pick

cherry-pick可以将其他分支的提交复制到别的分支,所以相对的一些场景就是:

  • 写错分支,还原到正确位置
  • 做一些复用,快速添加

解决

在这个场景中,bugfix分支是需要改代码的,而feature分支是写错的分支,现在需要将feature刚刚写的内容提取到bugfix分支。

1.首先,需要将feature分支中修改提交。

git add .
git commit -m "bug fix commit"

会有如下这种提示

image.png

2.通过git log命令查看当前commit的版本号,可复制前几位,比如

image.png

3.切换到bugfix分支上执行,将刚刚这次提交提取过来

git checkout bugfix
git cherry-pick 541c057abe

注意,这时如果在bugfix分支上有与这次提取的文件有冲突的话,会提示出来,需要解决一下冲突然后再提交,比如

image.png

这时打开提示冲突的文件,然后解决冲突后再提交。

除了摘樱桃外,还有一些比较常用的。

遗弃提交

在有些场景提交后发现这版写的有问题🤨,然后取消提交,可以利用revert来实现

比如现在对单例模式进行改造,做了一次提交,现在想取消

image.png

可以通过执行

git revert HEAD

会弹出一个编辑器让你输入一些提交信息,也可以直接退出,可以看到已经取消成功了。

image.png

image.png

看代码已经撤销成功了。