当前位置: 首页 > 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 其他代码仓库代码

相关文章:

  • DeepSeek改写glaredb的示例实现自定义CLI界面程序
  • c# 比较两个list 之间元素差异
  • (五)神经网络
  • uni-app项目实战笔记26--uniapp实现富文本展示
  • MicroProfile的配置和MicroProfile健康
  • 设备树引入
  • 动态面板axure
  • 告别固定密钥!在单一账户下用 Cognito 实现 AWS CLI 的 MFA 单点登录
  • Spring Cloud Gateway 实战:网关配置与 Sentinel 限流详解
  • 零知开源——基于STM32F407VET6零知增强板的四路独立计时器
  • 快速掌握广告联盟APP开发全流程,短剧和游戏广告app
  • 全面拥抱vue3
  • kubectl get pod返回数据研究
  • InfluxDB 3 Core数据库管理指南:从概念到实操的完整流程
  • 机器学习开篇:算法分类与开发流程
  • JavaScript中Object()的解析与应用
  • Redis—主从复制
  • webpack+vite前端构建工具 -答疑
  • kubernetes部署3节点高可用elasticsearch v8.14.3
  • 【数学基础】复杂度理论