当前位置: 首页 > news >正文

如何把 Git 分支上的特定提交移动到另一个分支

在实际开发中,我们经常会遇到这样的场景:

我们在zr分支做了一些功能提交,但需要把这些提交移动到prod-zr-1.0.5-4分支上去。

本文将介绍使用cherry-pick方法移动提交 ,并给出详细操作步骤和注意事项。


1. 使用cherry-pick移动提交

cherry-pick是 Git 提供的命令,用于复制某个提交到当前分支
优点:操作简单,安全,不改变原分支历史。

步骤

1️⃣ 保存未提交修改(可选,但推荐)
gitstash save"临时保存未提交修改"

这样可以避免本地修改被覆盖。


2️⃣ 切换到目标分支并更新
gitcheckout prod-zr-1.0.5-4gitpull origin prod-zr-1.0.5-4

3️⃣ 查看zr分支提交
gitlog zr--oneline

假设我们要移动的提交如下:

98f2e35a Merge branch'prod'into zr 22f4bc0b feat(account): 功能2 abcd1234 feat(account): 功能1

注意:merge commit 不要 cherry-pick,只 cherry-pick 功能提交。


4️⃣ 执行 cherry-pick

单条提交:

gitcherry-pick 22f4bc0b

多条连续提交(排除 merge commit):

gitcherry-pick abcd1234^..22f4bc0b

5️⃣ 处理冲突(如果有)
# 查看冲突文件gitstatus# 解决冲突后gitadd<file>gitcherry-pick--continue# 如果想放弃 cherry-pickgitcherry-pick--abort

6️⃣ 推送到远程
gitpush origin prod-zr-1.0.5-4

2. 使用IDEA 进行cherry-pick

如图所示我的zr分支 提交记录有两大功能模块

以prod 为基础创建分支prod-zr-1.0.5-4 (没有功能1和功能2)


目前prod 只想上线功能1的代码

  1. 切换到prod-zr-1.0.5-4
  2. 选中需要合并的提交记录
    1. 可多选,按住ctrl 鼠标右键选择非连续记录
    2. 按住shift 鼠标选择连续记录
  3. 选中后右键点击Cherry-Pick
  4. 可能有冲突解决冲突即可

  1. 提交记录点击Commit即可

  1. 可以看到功能1的代码被合并进来了

  1. 注意事项
    1. 从之前的步骤就可以知道Cherry-Pick是单独的commit ,因此如果此时将zr合并到prod-zr-1.0.5-4时,肯定是会有功能1的冲突的,因为如下图所示Cherry-Pick后的hash值和原来的是不一样的,相当是两个内容一样的提交

2. 后续想要把功能2的代码合并到prod-zr-1.0.5-4分支可以选择直接解决冲突(但是不建议,如果修改的代码很多需要花很多时间合并,如果全部选用一方的冲突代码可能会导致某一方对冲突代码文件新修改的内容丢失) 3. 建议方法使用Cherry-Pick把后续功能2的提交记录提交到prod-zr-1.0.5-4分支

3. 总结

方法适用场景优点注意事项
cherry-pick少量、零散提交安全、不改变原分支merge commit 需要排除
rebase连续提交整体移动历史干净、提交顺序一致改变历史,需要小心远程分支

我的建议:

  • 对于少量提交,用cherry-pick最简单;
  • 对于一段连续提交,用rebase更整洁,但要小心历史修改。
http://www.jsqmd.com/news/444521/

相关文章:

  • Java实战:高效实现Word与TXT文档互转的完整指南
  • 2026年专属健康管家服务平台推荐:谁是真正“靠谱”的高端健康管理伙伴? - 资讯焦点
  • 2026年五款常用需求管理工具哪个功能全面?企业选型参考 - 资讯焦点
  • python sys.set_int_max_str_digits(BIT)
  • 解决SCI语言难题!2026英文润色机构测评,艾德思综合实力位居第一 - 资讯焦点
  • Elasticsearch 进阶玩法
  • 优化大数据领域数据架构,释放数据潜力
  • 未来十二个月:2026年将改变AI进程的十件事
  • interrupted、interrupt、isInterrupted 三者关系全解析
  • 20260306紫题训练总结 - Link
  • 简单上手BIMP:GIMP批量图像处理终极指南 - 详解
  • Mysql的日志
  • 巧用Qwen code,干掉垃圾广告
  • 【Linux:资料】基础IO:资料操作的系统调用和库函数各个接口汇总及代码演示
  • 原核表达系统的分子机制全解析:转录调控、翻译动力学与蛋白折叠路径
  • 手把手搭建 OpenClaw + SeeDance 全自动营销系统:从“会生成”到“会转化”的完整路径
  • P5064 [Ynoi Easy Round 2014] 等这场战争结束之后 - Link
  • 【微电网优化】基于合作博弈的综合能源系统利益分配优化调度附Matlab代码
  • Elasticsearch用法和注意事项
  • 2026年深圳工程标书编制服务权威推荐:技术标编制、BIM标书编制、电子标代写、代做标书、投标文件制作、投标书代写、专业实力护航企业中标之路 - 海棠依旧大
  • 青鸟
  • 2026年3月深圳标书编制服务机构选择指南:工程、服务、采购、BIM、施工标书代写、服务类标书编制电子标编制服务机构 - 海棠依旧大
  • 对于一个38岁的人来说,现在转行AI大模型还来得及!【转行AI大模型攻略】
  • 企业级智能体平台需要哪些核心能力?一文看懂完整评估 Checklist
  • 深入解析:Android16 【GSI】CtsMediaCodecTestCases等一些列Media测试存在Failed项
  • SSRF基础----pikachu
  • Codepilot 接入飞书指南
  • docker突然无法启动
  • 【工具推荐】DiskGenius官网下载:硬盘分区+数据恢复神器,一键拯救误删文件 - xiema
  • 深入解析:OpenEBS — 云原生 CNS 高性能存储