如何把某一个 commit 合并到当前分支?Git cherry-pick 完整教程
如何把某一个 commit 合并到当前分支Git cherry-pick 完整教程在实际开发中我们经常会遇到这样的情况另一个分支中有很多提交但当前分支只需要其中某一个 commit。这种情况下没有必要把整个分支merge进来直接使用git cherry-pick就可以把指定提交带到当前分支。一、先说结论使用 git cherry-pick假设现在有两个分支main当前稳定分支feature功能开发分支feature分支上已经产生了多个 commit但你只想把其中某一个提交合并到main。这时先切换到接收提交的目标分支然后执行gitcherry-pickcommit-idcherry-pick的核心并不是把另一个分支整体合并过来而是把指定 commit 所引入的改动重新应用到当前分支并在当前分支上生成一个新的提交。可以简单记成一句话merge 是合分支cherry-pick 是挑提交。二、什么情况下应该用 cherry-pickgit cherry-pick最适合“我只需要这一条提交”的场景。实际开发中比较常见的情况有某个 Bug 已经在dev分支修复现在需要快速同步到main或release。一个功能分支中有很多 commit但当前分支只需要其中一个。某个 commit 提交到了错误分支需要把它带到正确分支。线上完成了一个 Hotfix需要把同样的修复同步到其他维护分支。如果你的需求是把整个功能分支一起合并那么通常应该使用git merge如果只想拿其中某一个提交cherry-pick会更加合适。三、完整操作把某一个 commit 合并到当前分支下面直接用一个完整例子说明。假设需要的 commit 位于feature分支而最终希望把它放进main分支。1. 先确认当前分支首先查看当前仓库有哪些分支gitbranch如果当前不在main先切换到maingitswitch main较老版本的 Git 也可以使用gitcheckout main这里一定要注意git cherry-pick会把指定 commit 的改动应用到当前分支。所以执行之前一定要先确认自己现在站在哪个分支上否则很容易把提交放错地方。2. 检查工作区状态执行cherry-pick之前建议先查看当前工作区gitstatus如果还有尚未处理的本地修改最好先提交、暂存或妥善保存再进行cherry-pick。这样可以避免当前修改和目标 commit 的改动混在一起减少冲突和误操作。3. 找到目标 commit ID查看提交历史gitlog--oneline--all--graph--decorate假设看到a72c91f fix: 修复登录状态失效问题 3bd5e84 feat: 新增用户头像上传 1f26a77 refactor: 重构用户服务现在我们只需要第一条修复提交那么目标 commit ID 就是a72c91f一般情况下Git 显示出来的短 commit ID 就可以直接使用只要它能够在当前仓库中唯一定位到对应提交。4. 执行 cherry-pick确认当前已经处于main分支以后执行gitcherry-pick a72c91f如果没有发生冲突Git 会直接把这个 commit 引入的改动应用到当前分支并自动创建一个新的提交。整个标准流程可以看下面这张图5. 检查是否成功查看最近几条提交记录gitlog--oneline-5再检查当前工作区gitstatus如果提交记录已经出现并且工作区状态正常那么这次cherry-pick就完成了。四、为什么 cherry-pick 以后 commit ID 变了很多人第一次使用cherry-pick时会发现一个问题明明是同一个提交为什么进入当前分支之后 commit ID 变了这是正常现象。cherry-pick并不是把原来的 commit 对象原封不动地搬到当前分支而是把这个 commit 引入的代码改动重新应用一次然后在当前分支创建新的提交。新的提交和原提交的父提交关系通常不同因此生成的新 commit ID 通常也会不同。所以判断cherry-pick是否成功时不要只看 commit ID 是否一样更重要的是检查目标代码改动是否已经进入当前分支。当前分支是否生成了对应的新提交。git status是否正常。五、cherry-pick 发生冲突怎么办如果目标 commit 修改的代码与当前分支中的代码已经产生较大差异Git 可能无法自动完成合并。这时cherry-pick会暂停并提示发生冲突。先查看当前状态gitstatus打开冲突文件手动处理冲突。解决完成以后把处理好的文件加入暂存区gitadd.然后继续执行gitcherry-pick--continue注意这时候不要重新执行原来的git cherry-pick commit-id。正确流程是发生冲突 ↓ 手动解决冲突 ↓ git add . ↓ git cherry-pick --continue六、不想继续 cherry-pick 了怎么办如果执行到一半发现选错 commit或者冲突过于复杂希望直接取消这一次操作可以执行gitcherry-pick--abortGit 会尝试把仓库恢复到这次cherry-pick开始之前的状态。如果正在连续cherry-pick多个提交并且当前这个提交不想继续应用可以使用gitcherry-pick--skip这几个命令可以这样记命令作用git cherry-pick --continue冲突解决后继续git cherry-pick --abort放弃本次 cherry-pickgit cherry-pick --skip跳过当前提交七、cherry-pick 完才发现选错 commit怎么撤销这里需要区分提交是否已经推送到了远程仓库。情况 1刚执行完还没有 push如果确定刚刚cherry-pick生成的就是最近一个 commit而且还没有共享给别人可以退回上一个提交gitreset--hardHEAD~1但是要特别注意--hard会同时重置提交、暂存区和工作区。如果工作区还有没有保存的重要内容可能会直接丢失因此执行前一定要确认当前修改是否需要保留。情况 2已经 push 到远程仓库如果这个提交已经被推送到公共分支一般不建议直接使用reset --hard改写共享历史。先查看提交记录gitlog--oneline找到cherry-pick后新生成的 commit ID然后执行gitrevertnew-commit-idrevert会创建一个新的反向提交用新的 commit 撤销原提交带来的修改而不是直接把已有历史删除。这种方式更适合团队协作中的公共分支。八、一次 cherry-pick 多个 commit虽然本文重点讲的是“某一个 commit”但实际开发中也可能需要挑选多个提交。多个不连续的 commit 可以直接写在命令后面gitcherry-pick a72c91f 3bd5e84 1f26a77Git 会按照给出的顺序依次应用这些提交。如果要选择一段连续的 commit可以使用提交范围gitcherry-pick A^..B这种写法表示把从A到B的这一段提交应用到当前分支其中包含A和B。如果中途某一个 commit 发生冲突整个过程会暂停。解决冲突以后执行gitcherry-pick--continueGit 才会继续处理后面的提交。九、cherry-pick 和 merge 到底有什么区别这是最容易混淆的地方。简单对比一下对比项git mergegit cherry-pick操作对象整个分支指定 commit是否自动带入其他提交通常会不会自动带入提交历史体现分支合并关系在当前分支生成新的提交典型场景功能分支整体合并只拿一个修复或小功能核心思路合分支挑提交一句话记忆merge 把分支合进来。cherry-pick 从提交历史里摘一个 commit 过来。十、实际开发案例假设团队现在有两个分支main feature/loginfeature/login中产生了三个 commit8a11c30 feat: 新增登录页面 91bd722 fix: 修复 token 过期判断 c3a8f05 feat: 新增第三方登录现在main分支只急需token修复并不想把登录页面和第三方登录功能一起带进去。先切换到maingitswitch main检查工作区gitstatus然后只选择修复提交gitcherry-pick 91bd722最后查看提交历史gitlog--oneline-5这样main只会得到91bd722所引入的代码改动而另外两个功能 commit 不会因为这次操作自动进入main。这就是cherry-pick最典型的使用场景。十一、最容易踩的几个坑1. 当前分支切错了这是最常见的问题。记住谁要接收这个 commit就先切换到谁。例如需要把某个提交合到maingitswitch main然后再执行cherry-pick。2. 工作区还有未提交修改执行前先检查gitstatus不要让正在开发但还没处理的代码与cherry-pick的改动混在一起。3. 冲突以后又重新执行 cherry-pick错误思路冲突以后再次执行gitcherry-pickcommit-id正确做法是解决冲突后gitadd.gitcherry-pick--continue4. 看到 commit ID 不一样就认为失败了cherry-pick后通常会生成新的 commit因此 commit ID 变化并不代表失败。重点检查代码改动和提交记录是否正确。5. 已经 push 以后随便 reset --hard如果已经推送到公共分支直接改写提交历史可能影响其他协作者。这种情况下通常更适合gitrevertcommit-id6. 整个功能都需要却一个一个 cherry-pick如果你最终就是需要整个功能分支那么通常直接merge更合理。如果几十个 commit 全靠cherry-pick一个个挑提交历史反而容易变得难以理解和维护。十二、常用命令速查查看当前状态gitstatus查看提交历史gitlog--oneline--all--graph--decorate切换目标分支gitswitch main挑选一个 commitgitcherry-pickcommit-id冲突解决后继续gitcherry-pick--continue放弃本次操作gitcherry-pick--abort跳过当前提交gitcherry-pick--skip撤销已经共享出去的提交gitrevertnew-commit-id十三、总结如果你的需求是只把另一个分支中的某一个 commit 合并到当前分支。最直接的方案就是gitswitchtarget-branchgitcherry-pickcommit-id实际操作时可以记住下面四步先切到接收提交的目标分支。找到需要的 commit ID。执行git cherry-pick commit-id。使用git log和git status检查结果。最重要的一点是cherry-pick 操作的是 commit不是整个分支。只要把这一点理解清楚什么时候应该用merge什么时候应该用cherry-pick基本就不会搞混了。参考资料Git 官方文档git-cherry-pick DocumentationGit 官方文档地址https://git-scm.com/docs/git-cherry-pick

相关新闻

VSCode 从安装到高效开发:系统配置指南与插件生态实践

VSCode 从安装到高效开发:系统配置指南与插件生态实践

你肯定遇到过这样的场景:刚接触编程,或者换了一台新电脑,第一件事就是装开发工具。网上搜“VSCode安装教程”,结果要么是官方文档的直译,要么是零散的截图拼接,看完还是不知道从哪一步开始,更别…

2026/8/20 0:32:33 阅读更多 →
十五条种子数据注入 项目:鸿蒙待办清单一开屏就热闹非凡

十五条种子数据注入 项目:鸿蒙待办清单一开屏就热闹非凡

实例:待办事项清单(Todo List) 本文提供 15 条种子数据,让页面首次打开就内容丰富,面板统计数字饱满一、种子数据设计思路 覆盖 3 种优先级(低/中/高)覆盖 4 个分类(工作/生活/学习/…

2026/8/20 10:30:46 阅读更多 →
React实战:供应链系统级联选择与实时库存校验架构设计

React实战:供应链系统级联选择与实时库存校验架构设计

1. 从“孤岛”到“血脉”:为什么供应链系统需要联动在供应链系统的日常操作里,最让人头疼的场景之一,莫过于“信息孤岛”。想象一下,你是一个采购员,正在创建一个新的采购订单。你首先需要选择一个供应商,然…

2026/8/18 17:11:09 阅读更多 →

最新新闻

CUBE标准:统一AI智能体评测的度量衡与架构解析

CUBE标准:统一AI智能体评测的度量衡与架构解析

1. 项目概述:为什么我们需要一个统一的智能体评测标准?最近在折腾各种AI智能体项目,从简单的自动化脚本到复杂的多模态交互系统,我发现了一个让人头疼的共性问题:评测。每次开发完一个智能体,想看看它到底行…

2026/8/22 0:01:12 阅读更多 →
多尺度智能体控制:从宏观密度场到微观决策的架构与实践

多尺度智能体控制:从宏观密度场到微观决策的架构与实践

1. 从宏观到微观:多尺度智能体控制的核心挑战在智能体(Agent)技术日益普及的今天,我们面临着一个越来越普遍的难题:如何同时管理成千上万个,甚至百万级别的智能体?无论是城市交通中的自动驾驶车…

2026/8/22 0:01:12 阅读更多 →
markdown-it-vue 踩坑排障:从安装到渲染的 6 个高频问题快速讲清

markdown-it-vue 踩坑排障:从安装到渲染的 6 个高频问题快速讲清

markdown-it-vue 踩坑排障:从安装到渲染的 6 个高频问题快速讲清 【免费下载链接】markdown-it-vue The vue lib for markdown-it. 项目地址: https://gitcode.com/gh_mirrors/ma/markdown-it-vue 这篇文章写给刚装上 markdown-it-vue 就遇到报错的你&#x…

2026/8/22 0:01:12 阅读更多 →
消除AI代码的“AI味”:Claude Code设计优化技能配置与实战指南

消除AI代码的“AI味”:Claude Code设计优化技能配置与实战指南

大家好,我是专注于前端开发与AI工具实践的技术博主。在日常使用 Claude Code 等AI编程助手时,你是否也遇到过这样的困扰:生成的代码功能上没问题,但代码风格、组件设计、交互逻辑总透着一股“AI味”——布局单调、样式简陋、交互生…

2026/8/22 0:00:11 阅读更多 →
电气考研电路八月强化四步法:从知识体系到真题实战的闭环攻略

电气考研电路八月强化四步法:从知识体系到真题实战的闭环攻略

这次我们来看一个针对电气考研电路科目的学习规划项目。它不是软件工具,而是一套聚焦于8月份关键节点的备考策略。对于电气工程考研的同学来说,电路分析是专业课的重中之重,也是拉开分差的关键。进入8月,复习进入强化阶段&#xf…

2026/8/22 0:00:11 阅读更多 →
沉金PCB工艺实战指南:从设计到SMT焊接的可靠性保障

沉金PCB工艺实战指南:从设计到SMT焊接的可靠性保障

在电子硬件开发领域,PCB(印制电路板)的沉金工艺是提升产品可靠性和焊接质量的关键环节。对于需要高密度互连、长期稳定运行或高频信号传输的板卡,如“黍姐仿通行证”这类可能涉及身份识别、数据交互的硬件项目,选择正确…

2026/8/22 0:00:11 阅读更多 →

日新闻

沉金PCB工艺实战指南:从设计到SMT焊接的可靠性保障

沉金PCB工艺实战指南:从设计到SMT焊接的可靠性保障

在电子硬件开发领域,PCB(印制电路板)的沉金工艺是提升产品可靠性和焊接质量的关键环节。对于需要高密度互连、长期稳定运行或高频信号传输的板卡,如“黍姐仿通行证”这类可能涉及身份识别、数据交互的硬件项目,选择正确…

2026/8/22 0:00:11 阅读更多 →
电气考研电路八月强化四步法:从知识体系到真题实战的闭环攻略

电气考研电路八月强化四步法:从知识体系到真题实战的闭环攻略

这次我们来看一个针对电气考研电路科目的学习规划项目。它不是软件工具,而是一套聚焦于8月份关键节点的备考策略。对于电气工程考研的同学来说,电路分析是专业课的重中之重,也是拉开分差的关键。进入8月,复习进入强化阶段&#xf…

2026/8/22 0:00:11 阅读更多 →
消除AI代码的“AI味”:Claude Code设计优化技能配置与实战指南

消除AI代码的“AI味”:Claude Code设计优化技能配置与实战指南

大家好,我是专注于前端开发与AI工具实践的技术博主。在日常使用 Claude Code 等AI编程助手时,你是否也遇到过这样的困扰:生成的代码功能上没问题,但代码风格、组件设计、交互逻辑总透着一股“AI味”——布局单调、样式简陋、交互生…

2026/8/22 0:00:11 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/21 3:21:33 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/21 0:02:09 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/21 6:07:56 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/21 16:42:28 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/20 21:46:49 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/21 0:14:22 阅读更多 →