# 一、需求 多分支的代码库,经常需要将不同分支的变更进行合并。 - 一种情况是,需要另一个分支的所有代码变动,那么就采用合并(git merge)。 - 另一种情况是,你只需要部分代码变动(某几个提交),这时可以采用 git cherry-pick。 # 二、cherry-pick 假设branchA分支有以下提交记录: ```bash [yz@test test]$ git log # branchA commitid1 commitid2 commitid3 commitid4 ``` 现有以下不同需求: ## pick特定某个commit 假设,需要将 branchA 的 commitid2,合并到 branchB,则: ```bash git checkout branchB git cherry-pick commitid2 ``` ## pick特定某几个commit 假设,需要将 branchA 的 commitid3和commitid1,合并到 branchB,则: ```bash git checkout branchB git cherry-pick commitid3 commitid1 ``` 注:请按提交顺序排列commit id。 ## pick连续多个commit 假设,需要将 branchA 的 commitid3 至 commitid1多个连续commit,合并到 branchB,则: ```bash git checkout branchB git cherry-pick commitid4..commitid1 ``` 注: - 请按提交顺序排列commit id。 - 范围为左开右闭,所以,以上命令不会合并commitid4的变更。 - “..”两个小点不可省略,且前后无空格。 ## 解决冲突 cherry-pick可能会发生冲突,此时需要手动处理冲突内容。 # 三、参考 - [git cherry-pick 教程](https://ruanyifeng.com/blog/2020/04/git-cherry-pick.html) - [git cherry-pick 使用指南](https://www.jianshu.com/p/08c3f1804b36)