Git Cherry-Pick 使用教程:精准移植提交的利器

Git Cherry-Pick 使用教程:精准移植提交的利器

摘要:在团队协作或分支管理中,我们常需要将某个分支的特定提交应用到其他分支,而无需合并整个分支。git cherry-pick 正是解决这一需求的利器。本文将通过通俗易懂的示例,详解 git cherry-pick 的使用方法、场景及注意事项。


一、什么是 Git Cherry-Pick?

git cherry-pick 是一个选择性“采摘”提交的命令,允许你将某个分支的单个或多个提交应用到当前分支。它类似于“复制粘贴”提交的修改,但保留了原提交的元信息(如作者、提交时间)。

核心用途

  • 将某个分支的特定功能/修复提交移植到其他分支。
  • 避免合并整个分支的多余代码。
  • 修复因分支管理失误导致的提交遗漏。

二、基本用法

1. 基础命令格式

git cherry-pick <commit-hash>
  • <commit-hash>:目标提交的哈希值(可通过 git log 查看)。

2. 操作步骤示例

假设以下场景:

  • dev 分支存在提交 a1b2c3d(修复了按钮点击Bug)。
  • 需将此提交单独应用到 main 分支。

步骤

  1. 切换到目标分支:
    git checkout main
    
  2. 执行 cherry-pick:
    git cherry-pick a1b2c3d
    
  3. 推送修改:
    git push origin main
    

3. 处理冲突

若 cherry-pick 过程中发生冲突:

  1. 手动解决冲突文件(需保留需要的代码)。
  2. 标记冲突已解决:
    git add <冲突文件路径>
    
  3. 继续完成操作:
    git cherry-pick --continue
    
  4. 若想放弃操作:
    git cherry-pick --abort
    

三、常见使用场景

场景1:跨分支应用提交

  • 问题:在 feature/login 分支开发时,误将某个通用工具函数提交到该分支,需移植到 dev 分支。
  • 解决
    git checkout dev
    git cherry-pick 工具函数提交的哈希值
    

场景2:修复遗漏提交

  • 问题:发布 prod 分支后,发现漏掉了一个关键热修复提交。
  • 解决
    git checkout prod
    git cherry-pick 热修复提交的哈希值
    

场景3:提取特定功能

  • 问题feature/payment 分支包含支付功能代码和调试日志提交,仅需提取功能代码到 main
  • 解决
    git checkout main
    # 选择支付功能的提交哈希值
    git cherry-pick abc123 def456
    

四、实用技巧与注意事项

1. 批量移植多个提交

git cherry-pick <commit1> <commit2> <commit3>

或使用区间语法(左开右闭):

git cherry-pick start-commit^..end-commit

2. 使用分支名 + 偏移量

git cherry-pick dev~2  # 应用 dev 分支最新的第3个提交

3. 注意事项

  • 避免重复提交:确保目标分支尚未包含该提交。
  • 依赖关系:若提交依赖其他修改,需按顺序移植。
  • 历史污染:过度使用可能导致分支历史混乱,慎用于公共分支(如 main)。

五、总结

git cherry-pick 是精准管理提交的利器,尤其适合需要选择性移植代码的场景。但它并非万能,需结合 git mergegit rebase 合理使用。牢记以下原则:

  • 精准性:仅移植必要的提交。
  • 谨慎性:公共分支操作前与团队沟通。
  • 可追溯性:通过提交信息明确记录操作原因。

扩展学习

  • 官方文档:Git Cherry-Pick
  • 进阶操作:git cherry-pick -n(移植代码但不自动提交)

希望这篇教程能帮助你高效管理代码分支!如有疑问,欢迎评论区留言讨论。


文章标签Git 版本控制 前端开发 团队协作 效率工具


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/970102.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【VB语言】EXCEL中VB宏的应用

【VB语言】EXCEL中VB宏的应用 文章目录 [TOC](文章目录) 前言一、EXCEL-VB1.实验过程2.代码 二、EXCEL-VB 生成.c.h文件1.实验过程2.代码 四、参考资料总结 前言 1.WPS-VB扩展包 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、EXCEL-VB 1.实验过…

Redis7.0八种数据结构底层原理

导读 本文介绍redis应用数据结构与物理存储结构,共八种应用数据结构和 一. 内部数据结构 1. sds sds是redis自己设计的字符串结构有以下特点: jemalloc内存管理预分配冗余空间二进制安全(c原生使用\0作为结尾标识,所以无法直接存储\0)动态计数类型(根据字符串长度动态选择…

NixHomepage - 简单的个人网站

&#x1f4bb; NixHomepage - 简单的个人网站 推荐下个人的开源项目&#xff0c;演示网站&#xff0c;项目链接 https://github.com/nixgnauhcuy/NixHomepage&#xff0c;喜欢的话可以为我的项目点个 Star~ &#x1f4f7; 预览 ⚙️ 功能特性 多平台适配 明亮/暗黑模式切换 W…

给压缩文件加密码的5种方法(win/mac/手机/网页端)

把文件加密压缩&#xff0c;一方面能有效保护个人隐私与敏感信息&#xff0c;防止数据在传输或存储过程中被窃取、篡改。另一方面&#xff0c;压缩文件可减少存储空间占用&#xff0c;提升传输速度&#xff0c;方便数据的存储与分享。以下为你介绍5种常见的加密压缩方法。 一、…

如何通过AI轻松制作PPT?让PPT一键生成变得简单又高效

如何通过AI轻松制作PPT&#xff1f;让PPT一键生成变得简单又高效&#xff01;在这个信息化飞速发展的时代&#xff0c;PPT已经成为我们日常工作、学习和生活中不可或缺的一部分。无论是公司会议、学术报告&#xff0c;还是个人展示&#xff0c;PPT的作用都不容忽视。很多人对于…

Linux之【网络I/O】前世今生(二)

前文回顾 通过学习 Linux之【网络I/O】前世今生&#xff08;一&#xff09;&#xff0c;我们知道了I/O 请求可以分为两个阶段&#xff0c;分别为 I/O 调用和 I/O 执行&#xff1a; I/O 调用 即用户进程向内核发起系统调用(通过 0x80 中断)。 I/O 执行 内核等待 I/O 请求处理完…

Redis未授权访问漏洞导致getshell

一、漏洞信息 redis默认情况下会绑定在本地6379端口&#xff0c;如果没有进行采用相关的策略&#xff0c;就会将redis服务暴露到公网上&#xff0c;如果再没有设置密码认证(一般为空)的情况下&#xff0c;会导致任意用户可以访问到目标服务器的情况下未授权访问redis以及读取r…

伯克利 CS61A 课堂笔记 08 —— Strings and Dictionaries

本系列为加州伯克利大学著名 Python 基础课程 CS61A 的课堂笔记整理&#xff0c;全英文内容&#xff0c;文末附词汇解释。 目录 01 Strings 字符串 Ⅰ Strings are An Abstraction. Ⅱ Strings Literals have Three Forms Ⅲ String are Sequences 02 Dictionaries 字典 …

【Stable Diffusion模型测试】测试ControlNet,没有线稿图?

相信很多小伙伴跟我一样&#xff0c;在测试Stable Diffusion的Lora模型时&#xff0c;ControlNet没有可输入的线稿图&#xff0c;大家的第一反应就是百度搜&#xff0c;但是能从互联网上搜到的高质量线稿图&#xff0c;要么收费&#xff0c;要么质量很差。 现在都什么年代了&a…

智能手表表带圆孔同心度检测

在智能手表的制造工艺中&#xff0c;表带圆孔同心度检测是确保产品品质的关键环节。精准的同心度不仅关乎表带与表体的完美适配&#xff0c;更直接影响用户的佩戴舒适度和产品的整体美观度。稍有偏差&#xff0c;就可能导致表带安装困难、佩戴时出现晃动&#xff0c;甚至影响智…

基于SSM+uniapp的数学辅导小程序+LW示例参考

1.项目介绍 系统角色&#xff1a;管理员、普通用户功能模块&#xff1a;用户管理、学习中心、知识分类管理、学习周报管理、口算练习管理、试题管理、考试管理、错题本等技术选型&#xff1a;SSM&#xff0c;Vue&#xff08;后端管理web&#xff09;&#xff0c;uniapp等测试环…

基于 openEuler 构建 LVS-DR 群集

一、 对比 LVS 负载均衡群集的 NAT 模式和 DR 模式&#xff0c;比较其各自的优势 。 二、 基于 openEuler 构建 LVS-DR 群集。 一 NAT 模式 部署简单&#xff1a;NAT 模式下&#xff0c;所有的服务器节点只需要连接到同一个局域网内&#xff0c;通过负载均衡器进行网络地址转…

JS设计模式之单例原型

那么单例模式都有哪些应用场景呢&#xff1f;如何通过构造函数创建单例如何使用模块化的方式创建总结 各位老铁们&#xff0c;今天我们介绍一下JS中单例设计模式&#xff0c;它的特点是确保一个类只有一个实例&#xff0c;并提供一个全局访问点来获取该实例&#xff08;无论被创…

vue+springboot+webtrc+websocket实现双人音视频通话会议

前言 最近一些时间我有研究&#xff0c;如何实现一个视频会议功能&#xff0c;但是找了好多资料都不太理想&#xff0c;最终参考了一个文章 WebRTC实现双端音视频聊天&#xff08;Vue3 SpringBoot&#xff09; 只不过&#xff0c;它的实现效果里面只会播放本地的mp4视频文件&…

Linux 基础IO——重定向和缓冲区

目录 一、重定向 1、重定向的本质 2、使用 dup2 系统调用 &#xff08;1&#xff09;输出重定向 &#xff08;2&#xff09;追加重定向 (3) 输入重定向 ​ 二、缓冲区 1.理解缓冲区 2.缓冲区刷新问题 3.为什么要有缓冲区&#xff1f; 4.这个缓冲区在哪里&#xff…

14、deepseek视觉大模型Janus Pro本地部署及实战

1、简介 2025.01.27&#xff1a; Janus-Pro发布&#xff0c;Janus的高级版本&#xff0c;显著提高了多模态理解和视觉生成。 Janus-Pro 是 Janus 的高级版本。具体来说&#xff0c; Janus-Pro 包括以下改进&#xff1a;优化的训练策略、 扩展的训练数据以及更大规模的模型。通…

【第3章:卷积神经网络(CNN)——3.1 CNN的基本结构与工作原理】

嘿,小伙伴们,今天咱们来聊聊深度学习里的一大明星——卷积神经网络(CNN)。这东西在图像识别、视频处理等领域简直不要太火,甚至人脸识别、物体检测这些高大上的应用,都离不开它的身影。废话不多说,咱们这就开聊! 一、CNN是什么东东? 在人工智能领域,卷积神经网络(…

VMware Workstate 的 Ubuntu18 安装 vmware tools(不安装没法共享)

在共享主机路径后&#xff0c;可以在&#xff1a; /mnt/hgfs/下方找到共享的文件。但没有安装vmware tool时是没法共享的。 如何安装vmware tool&#xff0c;网上版本很多。这里记录一下&#xff1a; VMware Workstation 17 Pro&#xff0c;版本&#xff1a;17.6.0 虚拟机系统…

高效开发!使用Chrome对MoonBit生成的Wasm进行性能分析!

在 [我们前一篇博客][call-wasm-from-js] 中&#xff0c;我们介绍了如何在前端 JavaScript 中使用 MoonBit 驱动的 Wasm 库 [Cmark]。在本文中&#xff0c;我们将探索如何直接从 Chrome 浏览器中对该库进行性能分析。希望这篇教程能对你在使用 MoonBit 在类似的场景中进行开发时…

《安富莱嵌入式周报》第350期:Google开源Pebble智能手表,开源模块化机器人平台,开源万用表,支持10GHz HRTIM的单片机,开源CNC控制器

周报汇总地址&#xff1a;嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 视频版&#xff1a; https://www.bilibili.com/video/BV1YPKEeyEeM/ 《安富莱嵌入式周报》第350期&#xff1a;Google开…