平时咱们合并分支,一般都是全量拉取另一个分支的代码提交记录。
现在突然出现一个需求,此时本地分支需要拉取另一个分支test上的某部分代码修改(简单说就是需要合并指定commit记录的文件修改记录到当前分支)
直接开始重点讲解:
在不同分支之间进行代码合并时,通常会有两种情况:一种情况是需要另一个分支的所有代码变动,那么就可以直接合并(git merge),另一种情况是只需要部分代码的变动(某几次提交),这时就可以使用以下命令来合并指定的提交:
- 在被合并的分支上进行查询commit操作
git log --oneline // 赋值需要合并的commit hash值
- 回到主分支后进行操作
// 合并一个commit_hash执行
git cherry-pick <commit hash>
// 合并多个commit_hash执行
git cherry-pick commit_hashA commit_hashB
// 合并多个连续的commit_hash执行(..)
git cherry-pick commit_hashA..commit_hashB
最后连续的写法,要注意一点:
需要注意的是,commit_hashA必须比commit_hashB提前提交,也就是说在被挑选的分支上,
先有的commit_hashA,然后才有的commit_hashB
此处的commit_hash指的是被合并分支上的commit_hash,要提前记住再切回来执行相关代码!
- 建议添加
```
-x
标志,因为它会生成标准化的提交消息,通知用户它是从哪里pick出来的
git cherry-pick -x <commit hash>
---
#### git cherry-pick高级用法
比如合并时出现冲突了如何处理???
1. 合并冲突
首先在使用cherry-pick时,如果遇到了代码冲突,其实合并过程会停止,需要使用其他的方式来继续对应的操作。这里的其他方式就是,正常的处理方式手动处理,之后进行下面的操作以继续命令
2. 采用--continue继续合并
1.第一步:需要合并人解决对应的冲突文件,然后提交到暂存区
git add .
2.第二步:使用下面的命令继续执行
git cherry-pick --continue
![](https://img-blog.csdnimg.cn/a097f56ed3b345249f4199cde1aa5202.png)
3. 放弃合并:有几种情况(回归原始状态,保留状态,)
回归原始状态:
// 使用当前的指令,合并的动作暂停,并且回归到操作前的样子
git cherry-pick --abort
![](https://img-blog.csdnimg.cn/d10db4b5833a4e5eade21442e40c323a.png)
保留状态:
//使用当前的指令,会保留车祸现场,退出cherry-pick
git cherry-pick --quit
![](https://img-blog.csdnimg.cn/1c87c1dea9db4b0083268a1e509bc9e3.png)
---
#### 联合使用的命令:
-e,--edit
使用当前指令,会打开编辑器,让用户编写信息
-n,--no-commit
只更新工作区和暂存区,不产生新的提交
-x
在提交信息的末尾追加一行(cherry picked from commit ...),说明这个提交是如何来的
```
这个常用在自己清楚每个分支的对应提交文件,否则可能合并部分代码导致后期项目合并问题!!!
版权归原作者 绝世唐门三哥 所有, 如有侵权,请联系我们删除。