8. Cherry-pick
8.1 基本用法
| 命令 | 作用 | 延展阅读 | 
|---|---|---|
| git cherry-pick 125a1d | 将提交 125a1d应用于当前分支. 在当前分支会产生一个新的提交. | 链接 | 
| git cherry-pick bugfix | 将分支 bugfix应用于当前分支. 在当前分支会产生一个新的提交. | 
场景1:提交125a1d应用到master分支
 
| 命令 | 作用 | 延展阅读 | 
|---|---|---|
| 1. git checkout master2. git cherry-pick 125a1d | 链接 | 
8.2 cherry-pick多个提交
| 命令 | 作用 | 延展阅读 | 
|---|---|---|
| git cherry-pick 125a1d 125a2a | cherry pick 支持一次 转移多个提交 | |
| git cherry-pick A..B | 转移一系列的 连续提交(不包含A),提交 A 必须早于提交 B,否则命令将失败,但不会报错 | |
| git cherry-pick A^..B | 转移一系列的 连续提交(包含A) | 
8.3 Cherry-pick配置项
| 命令 | 作用 | 延展阅读 | 
|---|---|---|
| git cherry-pick 125a1d -e | -e,--edit打开外部编辑器,编辑提交信息 | 链接 | 
| git cherry-pick 125a1d -x | 在提交信息的末尾追加一行 (cherry picked from commit ...),方便以后查到这个提交是如何产生的 | 链接 | 
| git cherry-pick 125a1d -s | -s,--signoff在提交信息的末尾追加一行操作者的签名,表示是谁进行了这个操作 | 链接 | 
| git cherry-pick 125a1d -n | -n,--no-commit只更新工作区和暂存区,不产生新的提交 | 链接 | 
| git cherry-pick -m 1 125a1d  | -m parent-number,--mainline parent-number如果原始提交是一个 合并节点,来自于两个分支的合并,那么 Cherry pick 默认将失败,因为它不知道应该采用哪个分支的代码变动。 -m配置项告诉 Git,应该采用哪个分支的变动。参数parent-number是一个从1开始的整数1号父分支是接受变动的分支(the branch being merged into),2号父分支是作为变动来源的分支(the branch being merged from) | 链接 | 
8.4 cherry-pick过程中代码冲突
| 命令 | 作用 | 延展阅读 | 
|---|---|---|
| cherry pick操作过程中发生代码冲突, Cherry pick 会停下来,让用户决定如何继续操作 | ||
| 1. 用户解决代码冲突; 2. git add .(将修改的文件重新加入暂存区)3. git cherry-pick --continue(让 cherry pick 过程继续执行) | 链接 | |
| git cherry-pick --abort | 发生代码冲突后,放弃合并,回到操作前的样子 | |
| git cherry-pick --quit | 发生代码冲突后,退出 Cherry pick,但是不回到操作前的样子 | 
8.5 Cherry-pick到另一个代码库
| 命令 | 作用 | 
|---|---|
| 1. git remote add target git@github.xxxxxx/testGit.git2. git fetch target3. git log target/master4. git cherry-pick commitHash | 1. 添加了一个远程仓库 target2. 远程代码抓取到本地 3. 获取要从远程仓库转移的提交,获取它的哈希值 commitHash4. 使用 git cherry-pick命令转移提交 | 

拓展:Git常用命令汇总



















