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

git 挑选:git cherry-pick

Cherry-Pick(挑选)

git cherry-pick 将一个或多个特定的提交从一个分支应用到另一个分支。它的主要作用是选择性地合并提交,而不是合并整个分支。与 mergerebase 不同,cherry-pick 只处理单个或多个指定的提交,而不是整个分支的历史。

[应用举例] (heads/dev) git cherry-pick 125a1d1 的详细工作原理
1、Git 会先检查工作目录,如果存在冲突或未提交的更改,Git 会提示你先提交或暂存更改。
2、获取提交 125a1d1 的对象信息,提取该提交的父提交(假设是 abc1234),使用 git diff abc1234 125a1d1 生成一个补丁文件(patch),尝试将这个补丁应用到当前分支 dev 的最新提交(即 HEAD)之后,如果有冲突,Git 会在冲突文件中标记冲突区域,并暂停 cherry-pick,等待用户手动解决冲突,用户解决后运行 git commit 继续完成 cherry-pick
3、创建一个新的提交对象,包含与 125a1d1 相同的变更内容,更新当前分支(dev)的引用和 HEAD ,使其指向这个新提交。
在这里插入图片描述

●(heads/dev) git cherry-pick 125a1d1          将提交 125a1d1 的变更应用到当前分支 dev 上
●(heads/dev) git cherry-pick release          将 release 分支的最新提交(即 heads/release)应用到 dev 分支上
●(heads/dev) git cherry-pick origin/release   将远程分支 origin/release 的最新提交(即 origin/release HEAD)应用到 dev 分支上
●(dev) git cherry-pick 125a1d1 125a2a1  将两个指定提交 125a1d1 和 125a2a1 分别应用到当前分支 dev 上
●(dev) git cherry-pick A..B             转移连续提交(不包含A)(提交A须早于提交B,否则命令将失败,但不会报错)
●(dev) git cherry-pick A^..B            转移连续提交(包含A) (提交A须早于提交B,否则命令将失败,但不会报错)
git cherry-pick 125a1d1 -e 或 --edit       在应用提交后,打开编辑器让你修改提交信息
● git cherry-pick 125a1d1 -x                 自动在提交信息末尾添加一行 (cherry picked from commit 125a1d1)git cherry-pick 125a1d1 -s 或 --signoff    在提交信息末尾追加签名行(如 Signed-off-by: Your Name <email>)
● git cherry-pick 125a1d1 -n 或 --no-commit  应用补丁但不创建新提交,只更新工作区和暂存区
● git cherry-pick -m 1 125a1d1               如125a1d是合并节点,cherry-pick将失败,因不知该用哪个分支的代码变动. 1和2的表示的分支A(2) merge into B(1)

git cherry-pick发生冲突时 ☞ 会停下来让用户决定如何继续操作 ☞ 撤销cherry-pick:git cherry-pick --abort
git cherry-pick发生冲突时 ☞ 会停下来让用户决定如何继续操作 ☞ 解决冲突,git add . && git cherry-pick --continue
git cherry-pick 其他代码仓库代码

http://www.xdnf.cn/news/1073341.html

相关文章:

  • springboot+Vue逍遥大药房管理系统
  • python中学物理实验模拟:瞬间推力与摩擦力作用下的物体运动
  • 【数据标注师】目标跟踪标注
  • 概述-4-通用语法及分类
  • Word之空白页删除2
  • 基于Pandas和FineBI的昆明职位数据分析与可视化实现(二)- 职位数据清洗与预处理
  • UniApp Vue3 模式下实现页面跳转的全面指南
  • SQL关键字三分钟入门:ROW_NUMBER() —— 窗口函数为每一行编号
  • FreeSWITCH配置文件解析(2) dialplan 拨号计划中xml 的action解析
  • 西门子S7-200 SMART PLC:小型自动化领域的高效之选
  • C语言---常见的字符函数和字符串函数介绍
  • STM32[笔记]--7.MDK5调试功能
  • 关于ubuntu 20.04系统安装分区和重复登录无法加载桌面的问题解决
  • 医疗标准集中标准化存储与人工智能智能更新协同路径研究(上)
  • 基于Spring Boot的网上购物平台设计与实现
  • 最后的生还者2:重制版 免安 中文离线运行版+整合包
  • Vue 项目中 Excel 导入导出功能笔记
  • 【数据标注师】3D标注
  • 【数据标注师】事件标注2
  • kubectl get pod返回数据研究
  • 访问不了/druid/index.html (sql.html 或 login.html)
  • 在单片机中如何实现一个shell控制台
  • 权限提升-工作流
  • Go开发工程师-Golang基础知识篇
  • Element Plus el-button实例类型详解
  • Kioptrix Level1
  • TCP 在高速网络下的大数据量传输优化:拥塞控制、效率保障与协议演进​
  • 开源3D 动态银河系特效:Vue 与 THREE.JS 的奇幻之旅
  • 在项目中如何巧妙使用缓存
  • MCPA2APPT:基于 A2A+MCP+ADK 的多智能体流式并发高质量 PPT 智能生成系统