git的cherry-pick合并指定分支
一、背景
在开发项目中, 将个人分支的代码合并到主分支, 或者将dev分支合并到release分支是常见的需求。
合并主要分为两种情况,一种是将分支上所有的commit合并到另一分支, 此时使用git merge即可实现。另一种试讲分支上某几个commit合并到另一分支, 此时就需要使用git cherry-pick来实现部分commit的合并。
二、git cherry-pick的基本用法
git cherry-pick <commitHash>
命令是将指定的commit合并到当前所在分支。
举个例子:
上线的项目中突然发生了问题, 我在个人分支修复了该问题, 此时比较紧急需要立马merge到release分支, 重新发布。假设存在release分支和dev-syz分支。需要将dev-syz分支的g合并到release中。
1 |
|
注:
1.d为release的最新的commit, g为修复改问题后的commit。
2.由于是修复紧急Bug,因此只想合并g commit。
现在将g commit合并到release分支,操作如下:
1 |
|
完成上述操作后,release分支和dev-syz分支的最新commit历史线如下:
1 |
|
从上述结果可以看出,使用git cherry-pick <commitHash>
转移指定分支实际上是在release上产生一个新的commit,只不过release上的g和dev-syz的g的 commitHash并不相同,但修改的代码内容是相同的。
三、git cherry-pick合并多个commit
同样,使用git cherry-pick <commitHash1> <commitHash2>
可以转移多个指定分支。
如果要转移一连串的commit,可以使用git cherry-pick a..b
,意思是转移从commit a到commit b的一段连续的commit。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!