在git多人协作中中经常出现需要将某一分支上的commit提交移植到另一分支上。

此时有两种情况

  1. 合并某个分支上单个commit
  2. 合并某个分支上的一系列相连的commits

1. 某个分支上单个commit

我们暂且描述为将分支feature的commit5686e2合并到master分支;

核心在于使用cherry-pick指令

// 切换到master分支
git checkout master
// 将feature分支的指定commit合并到master分支
git cherry-pick 5686e2

执行完后commit5686e2会最为一个新的commit被添加到master分支上,需要注意的是解决冲突方式类似于merge

2. 合并某个分支上的一系列commits

有时候需要的不只是合并单条commit,你可能会需要合并一系列相连的commits,这种情况下其实rebase方式会更加合适。

暂且描述为将分支feature的commit5686e2~65d599合并到master分支;

// 切换到feature
git checkout feature 

// 从feature上切换新的分支newbranch,并指明最后一条commit为将要合并的一系列commits的末尾
git checkout -b newbranch 65d599 

// 将newbranch分支的commit(指明起点为一系列commits的开头)合并到master(通过--onto指令)
git rebase --onto master 5686e2^

执行完后commit5686e2~65d599都会被合并到master分支上

happy coding!