git合并某个分支的某次提交(cherry-pick)

本文介绍了在Git开发流程中如何利用Cherry-pick命令选择性地将特定提交合并到不同分支,详细阐述了Cherry-pick的参数用法,并提供了合并单个及多个提交的实例,帮助开发者更精确地管理项目版本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:

一般项目在开发阶段,都会创建多个分支,用于不同开发阶段的版本发布
如:master、dev、pro、feature、hot_fix…等,之所以会有这种多分支情况,就是项目在不同的开发阶段,新的业务会对之前业务造成影响,所以建多个分支用来发布不同的迭代版本,直至一个迭代完成测试、上线。

示例

说明:

将某个分支的一个(或多个)提交合并到另一个分支,注意不是merge,merge是全部合并、而我们要的是可选择的,就要用到 Cherry pick

参数解释:

git cherry-pick [commit] 命令的常用配置项如下。
(1)-e
打开外部编辑器,编辑提交信息。
(2)-n
只更新工作区和暂存区,不产生新的提交。
(3)-x
在提交信息的末尾追加一行(cherry picked from commit …),方便以后查到这个提交是如何产生的。
(4)-s
在提交信息的末尾追加一行操作者的签名,表示是谁进行了这个操作。
(5)-m parent-number
如果原始提交是一个合并节点,来自于两个分支的合并,那么 Cherry pick 默认将失败,因为它不知道应该采用哪个分支的代码变动。
-m配置项告诉 Git,应该采用哪个分支的变动。它的参数parent-number是一个从1开始的整数,代表原始提交的父分支编号。

示例:

例如:有 testdev 两个分支,dev有多次提交(按照提交顺序)[ABCDE],我想合并提交Btest分支
1.查看 dev 提交版本号记录
git log dev
在这里插入图片描述
2.切换到待合并分支 test
git checkout test
3.执行合并
git cherry-pick 6b4182a807ef4e30b7da3ea9bf7211b4de9a7b6f
4.然后推到远程
git push

补充:

1.如果想一次合并B、C两个提交,如下:
git cherry-pick A B
2.我想合并从BD的所有提交
git cherry-pick B…D
注意:
上面提交B要早于D,不然不会成功,而且不会包含提交B,也就是只有C、D两次提交,如果要包含B提交,则要如下:
git cherry-pick B^..D

-END-

### 如何使用 `git cherry-pick` 挑选另一个分支的特定 commit 在 Git 中,可以通过 `git cherry-pick` 命令将其他分支上的某个或某些特定提交应用到当前分支。以下是实现这一目标的具体方法: #### 单个提交的应用 假设需要将来自 `feature` 分支的一个特定提交(其哈希值为 `<commit-hash>`)应用到当前分支,则可以按照以下方式操作: 1. 首先切换到目标分支(即希望接收更改的分支)。例如,如果目标分支名为 `main`,则运行以下命令: ```bash git checkout main ``` 2. 接下来,通过 `git cherry-pick` 应用所需的提交: ```bash git cherry-pick <commit-hash> ``` 此处 `<commit-hash>` 是待挑选提交的唯一标识符,可以从源分支的日志中获取,例如通过运行 `git log`。 #### 多个非连续提交的应用 当需要从另一分支选取多个不相连的提交时,只需依次提供这些提交的哈希值作为参数传递给 `git cherry-pick` 命令即可。例如: ```bash git cherry-pick <hash1> <hash2> <hash3> ``` #### 范围内的提交应用 对于一系列连续的提交,可利用两个提交之间的范围来简化操作。语法形式如下所示: ```bash git cherry-pick start-commit^..end-commit ``` 这里需要注意的是,起点应加上 `^` 符号表示排除该提交本身[^4]。 #### 解决冲突 在执行过程中可能会遇到合并冲突的情况。此时Git会停止进程等待用户介入解决问题后再继续完成剩余部分的工作流程。解决办法包括但不限于以下几个方面: - 编辑受影响文件消除差异之处; - 完成调整之后告知系统已完成修复动作以便恢复正常的运作状态: ```bash git add . git cherry-pick --continue ``` #### 取消未完成的操作 假如决定不再继续正在进行中的cherry picking过程,那么可以选择终止它而不留下任何痕迹的方法就是调用下面这条指令: ```bash git cherry-pick --abort ``` 以上便是关于如何运用`git cherry-pick`工具把别的地方所做的改动引入到现在所在位置的一些基本指导原则以及常见场景下的应对策略[^1][^2][^3]. ```python print("Example of using git commands within scripts is not applicable here as this involves shell operations rather than Python programming.") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值