git cherry-pick 与 git merge 的区别

对于多分支的代码库,将代码从一个分支转移到另一个分支是常见需求。

这时分两种情况。一种情况是,你需要另一个分支的所有代码变动,那么就采用合并(git merge)。另一种情况是,你只需要部分代码变动(某几个提交),这时可以采用 git cherry-pick。

git merge的操作对象是branch,而git cherry-pick的操作对象是commit。

git cherry-pick 的操作

git cherry-pick commit_id
git cherry-pick commit_id1..commit_id100

等价于

git cherry-pick (commit_id1..commit_id100]
git cherry-pick commit_id1^..commit_id100
git cherry-pick <commit_id1> <commit_id2> <commit_id3>

注意:
(1)中间的两个点,表示把两个commit区间的所有commit多复制过去
(2)33ad206这一串字符串,叫做commit id,可以用完整的commit id,也可以从头开始截取部分,尽量长一点 (才能唯一)。

代码冲突

  1. 解决冲突
  2. git add .
  3. git cherry-pick -continue