git cherry-pick用法
以下以 test分支合并到master分支为例:
注释:commitId可以通过git log来查询
场景:需要 将test分支的指定commits合并到master分支。
- 单个提交commit合并到master分支:git cherry-pick commitId
- 多个提交commits合并到master分支:git cherry-pick commitId_start..commitId_end // 意思是合并commitId_start到commitId_end 的多个分支,且不包括commitId_start
但是,合并之后可能会出现以下问题:commit xxx is a merge but no -m option was given ,而且不能跳过。
一般来说,git不能cherry-pick一个合并提交(在git log历史提交记录中可以看到有多个merge值),因为它无法知道合并的分支中哪一个作为主线。
因此,处理这个问题只需执行指令:git cherry-pick -m 1 commitId // 此处的commitId为该合并提交的commitId,-m是选择主线(mainline)的意思,1是第一个合并id的意思(从1开始计数)
- -m 1 表示保留当前分支的更改
- -m 2 表示保留master更改
之后,再执行 git cherry-pick --skip 就可以跳出 (master|CHERRY-PICKING)状态了。
但是,这样还没完 ~~~ (这只是完成了本地分支的指定合并,并未推送到远程分支)
然后再执行一系列以下指令:
git pull // 拉取远程代码
...(如果出现冲突,打开vscode,解决完冲突再提交)
git commit -a '解决冲突'
git push // 推送到远程
到这里就大功告成了!!!