8. Cherry-pick
8.1 基本用法
命令 | 作用 | 延展阅读 |
---|---|---|
git cherry-pick 125a1d | 将提交125a1d 应用于当前分支 . 在当前分支 会产生一个新的提交 . | 链接 |
git cherry-pick bugfix | 将分支bugfix 应用于当前分支. 在当前分支 会产生一个新的提交 . |
场景1:提交125a1d
应用到master
分支
命令 | 作用 | 延展阅读 |
---|---|---|
1. git checkout master 2. 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.git 2. git fetch target 3. git log target/master 4. git cherry-pick commitHash | 1. 添加了一个远程仓库target 2. 远程代码抓取到本地 3. 获取要从远程仓库转移的提交,获取它的哈希值 commitHash 4. 使用 git cherry-pick 命令转移提交 |
拓展:Git常用命令汇总