git cherry-pick

介绍

git cherry-pick 可以选择某一个分支中的一个或几个commit(s)来进行操作。例如,假设我们有个稳定版本的分支,叫prd,另外还有个开发版本的分支dev,我们不能直接把两个分支合并,这样会导致稳定版本混乱,但是又想增加一个dev中的功能到prd中,这里就可以使用cherry-pick了,其实也就是对已经存在的commit 进行再次提交。

这个流程也适用于hotfix流程, 比如在prd分支上提交个bugfix,需要提交到dev分支。

用法

git cherry-pick 

注意:当执行完 cherry-pick 以后,将会生成一个新的提交;这个新的提交的哈希值和原来的不同,但标识名一样;

示例

把prd上的某个commit合并到dev。

  1. 找到某次提交到prd分支的的commit id - 29259ee, 执行如下命令
$ git checkout dev
$ git cherry-pick 29259ee   ## 这个 29259ee,位于prd分支中
  1. 接下来正常commit, 如果有冲突就手工解决。

若提示:

error: a cherry-pick or revert is already in progress
hint: try "git cherry-pick (--continue | --quit | --abort)"
fatal: cherry-pick failed

则执行对应操作:

git cherry-pick --continue
git cherry-pick --quit
git cherry-pick --abort

命令集合

git cherry-pick :单独合并一个提交
git cherry-pick -x :同上,不同点:保留原提交者信息。
Git从1.7.2版本开始支持批量cherry-pick,就是一次可以cherry-pick一个区间的commit。
git cherry-pick ..
git cherry-pick ^..
前者表示把之间(左开右闭,不包含start-commit-id)的提交cherry-pick到当前分支;
后者有"^"标志的表示把之间(闭区间,包含start-commit-id)的提交cherry-pick到当前分支。
其中,只需要commit-id的前6位即可,并且在时间上必须早于
注:以上合并,需要手动push代码。

参考

链接:https://www.jianshu.com/p/08c3f1804b36

你可能感兴趣的:(git cherry-pick)