git学习笔记——git cherry—pick : 一次提交多分支到位
七、cherry—pick : 一次提交多分支到位1、概念有很多人会疑问,多分支合并代码已经有 merge 了,为什么又要多一个 cherry-pick?merge 在一定情况下,会导致代码丢失,原因是merge的过程,merge的过程分为快速合并、三方合并。感兴趣的同学自行了解学习。因此,我们需要一个一次提交多次到位的方法,并且保证代码不丢失。这时候就出现了 cherry-pick流程:目前我们
七、cherry—pick : 一次提交多分支到位
1、概念
-
有很多人会疑问,多分支合并代码已经有 merge 了,为什么又要多一个 cherry-pick?
- merge 在一定情况下,会导致代码丢失,原因是merge的过程,merge的过程分为快速合并、三方合并。感兴趣的同学自行了解学习。
- 因此,我们需要一个一次提交多次到位的方法,并且保证代码不丢失。这时候就出现了 cherry-pick
-
流程:
-
目前我们有两个分支 master 、 feature
-
a - b - c - d - e Master \ f - g - h - i Feature -
现在我们需要将提交 h 合并到
master分支上,用了 cherry-pick 就是如下的模型 -
a - b - c - d - e - h Master \ f - g - h - i Feature -
从上面可以看到,
master分支的末尾增加了一个提交 h
-
-
cherry-pick 可以让我们把某次提交合并到某一分次,而不干涉其他提交
2、cherry-pick 基本用法
-
git cherry-pick <commitHash>
-
commitHash:表示每次提交的hash值
-
作用:将指定的提交转移到当前分支,此时当前分支产生一个新的提交,它们的哈希值会不一样。
-
git cherry-pick d476dc4
-
-
git cherry-pick <branchId>
-
branchId:表示分支名
-
作用:转移该分支的最新提交。
-
git cherry-pick feature/dev-1.0.2
-
-
git cherry-pick <HashA> <HashB>
-
HashA:表示提交的hash值
-
作用:将 A 和 B 两个提交应用到当前分支,这会在当前分支生成两个对应的新提交。
-
git cherry-pick 92835bef12d6975992ef026bc3f786c54134abe8 92fa72277c90017143c05169c879839533e48a9d
-
-
git cherry-picl <HashA> … <HashD>
-
HashA:表示提交的hash值
-
作用:将一系列提交转移到该分支,必须按照正确的顺序放置:提交 A 必须早于提交 B,否则命令将失败,但不会报错。
-
注意:该这是一个左开右闭的操作 <HashA> 不会被转移到当前分支
-
如果要包含提交 A,可以使用该语法:git cherry-pick <HashA>^…<HashD>
-
如果想让每个commit 暂缓提交,等到所有commit都拣选完成后,自己手动commit,则添加 -n 选项
-
git cherry-pick 8607f6102c8087be496ff0175d1790f83808c27c..92fa72277c90017143c05169c879839533e48a9d //左开右闭 git cherry-pick 8607f6102c8087be496ff0175d1790f83808c27c^..92fa72277c90017143c05169c879839533e48a9d //左闭右闭 git cherry-pick -n 8607f6102c8087be496ff0175d1790f83808c27c^..92fa72277c90017143c05169c879839533e48a9d
-
3、cherry-pick 时代码冲突
-
–continue
- 用户解决代码冲突后,将修改的文件重新加入暂存区,(
git add .) - 用 git cherry-pick --continue 命令,让 Cherry pick 过程继续执行。
- 用户解决代码冲突后,将修改的文件重新加入暂存区,(
-
–abort
- 发生代码冲突后,放弃合并,回到操作前的样子。
-
–quit
- 发生代码冲突后,退出 Cherry pick,但是不回到操作前的样子。
4、注意事项
更多推荐

所有评论(0)