场景
今天在修改一个bug,在快修改完时发现,写错分支上了。写错的这个分支平时是用来研究一些新特性的,忘记切换回来,这时如何解决,第一个想到了git的摘樱桃,即cheery-pick。
cherry-pick
cherry-pick可以将其他分支的提交复制到别的分支,所以相对的一些场景就是:
- 写错分支,还原到正确位置
- 做一些复用,快速添加
解决
在这个场景中,bugfix分支是需要改代码的,而feature分支是写错的分支,现在需要将feature刚刚写的内容提取到bugfix分支。
1.首先,需要将feature分支中修改提交。
git add .
git commit -m "bug fix commit"
会有如下这种提示
2.通过git log命令查看当前commit的版本号,可复制前几位,比如
3.切换到bugfix分支上执行,将刚刚这次提交提取过来
git checkout bugfix
git cherry-pick 541c057abe
注意,这时如果在bugfix分支上有与这次提取的文件有冲突的话,会提示出来,需要解决一下冲突然后再提交,比如
这时打开提示冲突的文件,然后解决冲突后再提交。
除了摘樱桃外,还有一些比较常用的。
遗弃提交
在有些场景提交后发现这版写的有问题🤨,然后取消提交,可以利用revert来实现。
比如现在对单例模式进行改造,做了一次提交,现在想取消
可以通过执行
git revert HEAD
会弹出一个编辑器让你输入一些提交信息,也可以直接退出,可以看到已经取消成功了。
看代码已经撤销成功了。