当前位置: 首页 > 工具软件 > Cherry > 使用案例 >

git cherry-pick 的作用与使用方法

邹博明
2023-12-01

在实际开发过程中,将代码从一个分支转移到另一个分支是常见需求。

这时分两种情况:

  • 一种情况是,我们需要另一个分支的所有代码改动,那么就可以采用合并处理git merge
  • 另一种情况,我们只需要部分代码改动(某一个或多个 commit 提交),这时就可以采用 cherry pick

1 cherry-pick 的作用

cherry-pick ,精心挑选的意思,挑选一个我们需要的 commit 。

其作用:将在其他分支上的 commit 修改,移植到当前的分支。

2 使用场景

想在一个稳定的版本上,添加一个刚开发完成的版本中的某个功能,而非某个分支的所有代码。

可以使用 git cherry-pick <commit-id>命令,将这个功能相关的 commit 提取出来,合入稳定版本的分支上。

3 使用方法

每次只拉去一个 commit 记录:

git cherry-pick <commitID>

// 增加 -x 参数,表示保留原提交的作者信息进行提交
git cherry-pick -x <commitID>

当执行完 cherry-pick 之后,将会自动生成一个新的 commit 进行提交,也会有一个新的 commit ID。然后可以进行 git push 到远程分支,进行创建合并请求。顺利的话,正常合并就可以。如果遇到冲突,解决冲突即可。

支持批量 cherry-pick

就是可以一次将一个连续的时间序列内的 commit ,设定一个开始和结束的 commit ,进行 cherry-pick 操作。

git cherry-pick commit1..commit100

// 可以看到,它的范围就是 commit1 到 commit100 之间所有的 commit,但是它这是一个(左开,右闭] 的区间,也就是说,它将不会包含 commit1 的 commit。

而如果想要包含 start-commit-id 的话,就需要使用 ^ 标记一下,就会变成一个 [左闭,右闭] 的区间,commit1 和 commit100 都会合并到当前分支。

git cherry-pick commit1^..commit100

注意:上面讲到cherry-pick命令每拣选一个commit就会提交一次生成一个新的commit id。 如果我们想让每个commit 拣选后暂缓提交,等到所有commit都拣选完成后,自己手动commit。

那么可以加上 -n 选项在 commitID 前面,这样到最后可以进行一次提交

git cherry-pick -n commit1^..commit100
 类似资料: