当前位置: 首页 > 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.lqws.cn/news/551953.html

相关文章:

  • GO 语言学习 之 函数
  • 为何需要防爆平板?它究竟有何能耐?
  • UniApp Vue3 模式下实现页面跳转的全面指南
  • 【笔记】 Docker目录迁移脚本
  • Python 数据分析与可视化 Day 10 - 数据合并与连接
  • 掌握 MySQL 的基石:全面解读数据类型及其影响
  • Swift Moya自定义插件打印日志
  • 【Bluedroid】蓝牙启动之BTM_reset_complete源码解析
  • GitHub Actions 实现 AWS ECS 服务的多集群安全重启方案
  • 《剖开WebAssembly 2.0:C++/Rust内存管理困局与破局》
  • 移动端日志平台EMAS
  • 接口自动化测试框架详解
  • 领域驱动设计(DDD)【22】之限定建模技术
  • 现代串口通讯UI框架性能对比
  • 【数据标注师】目标跟踪标注
  • 【MySQL数据库 | 第十篇】DCL语句----用户管理+权限控制
  • 商业秘密中经营信息的法律保护探析——以客户名册为例
  • ZooKeeper深度面试指南二
  • SpringMVC系列(七)(Restful架构风格(下))(完结篇)
  • 什么是哈希链(Hash Chain)?
  • 计算机组成原理-数据表示与运算(三)
  • 【数据结构】AVL树和红黑树的Insert(插入)(实现map.insert)
  • SpringBoot 防刷 重复提交问题 重复点击问题 注解 RequestParam RequestBody
  • 如何在 Manjaro Linux 上安装 Deepin 桌面
  • 构建证据的系统性知识体系:从理论到实践的完整指南
  • MyBatis 缓存机制详解
  • Python打卡:Day39
  • Java--数组
  • python打卡day56
  • 智能助手(利用GPT搭建智能系统)