一、需求

多分支的代码库,经常需要将不同分支的变更进行合并。

二、cherry-pick

假设branchA分支有以下提交记录:

snippet.bash
[yz@test test]$ git log    # branchA
commitid1
commitid2
commitid3
commitid4

现有以下不同需求:

pick特定某个commit

假设,需要将 branchA 的 commitid2,合并到 branchB,则:

snippet.bash
git checkout branchB
git cherry-pick commitid2

pick特定某几个commit

假设,需要将 branchA 的 commitid3和commitid1,合并到 branchB,则:

snippet.bash
git checkout branchB
git cherry-pick commitid3 commitid1

注:请按提交顺序排列commit id。

pick连续多个commit

假设,需要将 branchA 的 commitid3 至 commitid1多个连续commit,合并到 branchB,则:

snippet.bash
git checkout branchB
git cherry-pick commitid4..commitid1

注:

解决冲突

cherry-pick可能会发生冲突,此时需要手动处理冲突内容。

三、参考