git高级用法之cheery-pick

时间:2023-03-09 14:42:58
git高级用法之cheery-pick

前言

想象一种情况,你在分支上开发多个功能,现在要将第一个功能推到另一个分支上

master
1_2
| dev
\__3_4_5

例如上面的,先基于master创建了分支dev, 然后提交了3个commit, 如何只将提交3 合到master 上去呢?  

这就用到git的cheery-pick

  1. 先创建一个临时分支tmp,基于master
     git checkout -b tmp maser
  2. 将dev 的提交3 pick到tmp分支,这里commit_id 模拟就是3,当然实际的commit id是一个不可能重复的hash值
    git cherry-pick <commit id>
  3. 最后push 然后提mr

效果就是

master
1_2_3
| dev
\__3_4_5

cherry-pick 也适用与本地提交

因为git 的commit id 是uuid,在本地分支可以拉其它本地分支的commit