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  // 推送到远程

 

到这里就大功告成了!!!

 

posted @ 2021-07-24 11:11  一只两支三指  阅读(2327)  评论(0编辑  收藏  举报