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

git的cherry-pick

git cherry-pick 是 Git 中一个强大的命令,用于将指定的提交(commit)​​ 从其他分支复制到当前分支。与合并 (merge) 不同,它只选择性引入特定提交的变更,而不是整条分支的历史。以下是核心要点:


核心概念

  1. 精准复制提交
    复制一个或多个提交的修改(文件改动),在当前分支生成内容相同但哈希值不同的新提交。

  2. 避免全分支合并
    当需要引入其他分支的部分功能/修复,而非整个分支时使用(例如:只移植一个关键 Bug 的修复)。


使用场景

  • ✅ 将 develop 分支的某次 Bug 修复提交应用到 main 分支
  • ✅ 从废弃分支中救回特定功能提交
  • ✅ 跨分支选择性同步代码(非完整合并)
  • ❌ 不适用于需保留完整分支关系的场景(此时用 merge

基础命令

# 复制单个提交
git cherry-pick <commit-hash># 复制多个连续提交(左开右闭区间)
git cherry-pick <start-commit>..<end-commit># 复制多个不连续提交
git cherry-pick <hash1> <hash2>

操作步骤

  1. 切换到目标分支

    git checkout main
  2. 执行 cherry-pick

    git cherry-pick 1a2b3c4d  # 提交哈希值
  3. 解决冲突(若发生)​

    • 手动修改冲突文件
    • 标记为已解决:
      git add <file>
    • 继续完成操作:
      git cherry-pick --continue
  4. 取消操作(冲突时放弃)​

    git cherry-pick --abort

常用选项

选项说明
-e编辑新提交的说明信息
-n只复制修改,不生成提交(需手动提交)
-x在提交信息中追加来源哈希值(便于溯源)
-s添加操作者签名(Signed-off-by 标签)

典型问题与解决

  1. 冲突处理
    Git 会在复制提交时暂停操作,需手动解决冲突后:

    git add . && git cherry-pick --continue
  2. 跨分支提交依赖问题
    如果复制的提交依赖于其他未选取的提交,可能导致逻辑错误。此时需检查代码完整性。

  3. 历史污染
    过度使用会导致分支历史零碎混乱,需谨慎使用!


示例流程

# 从 feature 分支复制关键提交
git checkout main
git cherry-pick 5e6f7a8   # 提交哈希
git push origin main      # 推送到远程

​**VS git merge / git rebase**​

工具作用差异点
cherry-pick复制特定提交精准控制,但易碎片化历史
merge整合完整分支保留历史,但引入无关提交
rebase将当前分支变基到目标分支重写历史,影响协作分支

总结​:git cherry-pick 是精准移植提交的高效工具,适用于需选择性引入代码的场景。务必注意提交依赖和历史整洁性,避免滥用!

http://www.dtcms.com/a/283658.html

相关文章:

  • AI安全威胁之MCP Server投毒攻击实践
  • Git 多人协作实战:从基础操作到分支管理全流程记录
  • LiteSQL:让C++与数据库无缝对接的ORM利器
  • 物联网主机在化工园区安全风险智能化管控平台中的应用
  • 2025TGRS多尺度稀疏交叉注意力网络
  • 如何在PyCharm中删除虚拟环境
  • 建立框架思维
  • 锂电池制造行业MES特色解决方案:差异化生产管控与智能工厂实践
  • 深入理解Map.Entry.comparingByValue()和Map.Entry.comparingByKey()
  • Java中excel字典转换
  • Java 设计模式及应用场景
  • RocketMq集群高可用
  • ​​深入理解进程状态:从运行到僵尸​
  • 学习软件测试掌握什么基本知识?
  • 数字经济专业核心课程解析:从理论到实践的学习框架
  • C/C++---rdbuf()函数
  • parallels desktop windows win10无法复制文件无法共享剪切板
  • 利用node.js在本地搭建简易http服务器
  • QT跨平台应用程序开发框架(10)—— Qt窗口
  • 【C#】Vscode中C#工程如何引用自编写的dll
  • React hooks——useReducer
  • 端到端神经网络视频编解码器介绍
  • 神经网络常见激活函数 14-Mish函数
  • AI学习笔记三十二:YOLOv8-CPP-Inference测试(Linux版本)
  • CDSS系统升级“可视化解释-智能反馈-临床语言“三位一体设计架构设计分析
  • 「Chrome 开发环境快速屏蔽 CORS 跨域限制详细教程」*
  • lua(xlua)基础知识点记录二
  • Oracle数据泵详解——让数据迁移像“点外卖”一样简单​
  • 数据库管理-第349期 Oracle DB 23.9新特性一览(20250717)
  • python与正则:前后向断言、分组,以及案例练习