在git多人协作中中经常出现需要将某一分支上的commit提交移植到另一分支上。
此时有两种情况
- 合并某个分支上单个commit
- 合并某个分支上的一系列相连的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!