对于多分支的代码库,将代码从一个分支转移到另一个分支是常见需求。
这里分两种情况讨论:
1、需要另一个分支的所有代码变动,采用git merge;
2、只需要部分代码变动(某几个提交),采用cherry pick;
git cherry-pick <commitHash>
上述命令会将指定的提交commitHash,应用于当前分支。这会在当前分支产生一个新的提交,当然它们的哈希值会不一样。
git cherry-pick的参数不一定是哈希值,可以是某个分支名,表示转移该分支的最新提交。
git cherry-pick branchname
cherry pick支持一次转移多个提交
git cherry-pick <HashA> <HashB>
上面这个命令会把HashA和HashB两个提交应用于当前分支。会在当前分支生成两个对应的新提交。
如果要转移一系列连续的提交
git cherry-pick A..B //这条命令可以转移从A到B的所有提交,但不包括A。而且A的提交必须早于B,否则命令会失败,并且不会提示。
git cherry-pick A^..B //这条命令会包含A
阮一峰的git cherry-pick教程:http://www.ruanyifeng.com/blog/2020/04/git-cherry-pick.html