git
中的 stash
命令,今天再来学习一个命令:cherry-pick
。我们正常的工作场景中,合并分支中的代码,往往都是通过 merge
命令达到效果。
但是某些情况,使用 cherry-pick
往往会非常方便。
cherry-pick
英译:精选/挑选
我遇到的使用场景:
情况一:
但是我最近有遇到过这么一个情况,我自己commit提交的几个分支代码,被别人的代码覆盖了。虽然代码被覆盖了,但是代码提交的commit还是存在的,这个时候就可以使用 cherry-pick 将我自己的部分commit 合并过来。
情况二:
我在主干 master
分支上,突然想合并某个功能分支的某一个 commit
,全量的 merge
并不符合我的要求,此时可以尝试使用 cherry-pick
。
首先我又一个A分支,A分支上有几个提交,如下图所示:
A分支:通过 `git log --oneline` 查看所有commit记录初次提交->1->2->3
现在我切换到 master
分支上,我想拿到A分支上提交记录为 2 的 commit
的内容。
可以看到上诉的截图,我们成功将A分支上提交记录为 2 的 commit
的内容拿了过来。
如果想拿多个 commit
该如何操作?
git cherry-pick commitA commitB commitC
如果想获取一个区间的commit
git cherry-pick commitA...commitB
# 不包含commitA,包含commitBgit cherry-pick commitA^...commitB
# 包含commitA,包含commitB
无论是对单个 commit
进行 cherry-pick
,还是批量处理,注意一定要根据时间线,依照 commit
的先后顺序来处理,否者会有意想不到的问题。
总结一下今天学习到的内容:
cherry-pick
挑选的意思。commit
合并到我们的当前分支,我们依托 commit的id
即可。