多个git项目库之间的cherry-pick操作

2023-12-24 15:40

本文主要是介绍多个git项目库之间的cherry-pick操作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 多个git项目库之间的cherry-pick操作
    • 1、目的:把A库master分支的某次提交commit id 提交到 B库feature分支
    • 2、在A库代码目录中通过git log 查看需要的commit id
    • 3、切换到B库的代码目录中
      • 1)****B库: 在本地添加另一个A库
      • 2)****B库: 通过 `git remote -v` 查看是否添加成功
      • 3)****B库: 通过 `git fetch devorigin` 将A库的该分支信息同步到本地
      • 4)完成 fetch 就已经可以开始`cherry-pick`操作了
      • 5)同时本地B库feature分支也会生成一条 commit 记录
      • 6) 最后将本地合并的代码 `git push` 到B库线上仓库
  • cherry-pick
    • 基本用法
    • cherry pick转移多个提交
    • cherry pick 配置项
    • cherry pick 代码冲突

多个git项目库之间的cherry-pick操作

从git上的A库 fork 到 B库,然后A库和B库进行独自的开发。开发中也会遇到一些问题,例如A库有重要的代码修复,老办法是再去B库修改一次,操作起来不太方便。这里就尝试从多个不同git库中进行cherry-pick。

1、目的:把A库master分支的某次提交commit id 提交到 B库feature分支

2、在A库代码目录中通过git log 查看需要的commit id

在这里插入图片描述

3、切换到B库的代码目录中

1)****B库: 在本地添加另一个A库

git remote add devorigin https://gitee.com/A库的代码地址

2)****B库: 通过 git remote -v 查看是否添加成功

在这里插入图片描述

3)****B库: 通过 git fetch devorigin 将A库的该分支信息同步到本地

在这里插入图片描述

这里简单概况下git fetch 和 git pull 的区别
git fetch 是将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中
git pull 则是将远程主机的最新内容拉取到本地并且直接进行合并,即:git pull = git fetch + git merge这样可能会产生冲突,需要手动解决

4)完成 fetch 就已经可以开始cherry-pick操作了

****B库:git cherry-pick 279f6669f485a522471d5b4c42c828be5df47b4e

如果发生代码冲突会提示代码冲突目录地址:
在这里插入图片描述
合并成功的提示:
在这里插入图片描述
上图的提示就说明成功的把A库master分支的某次 commit 提交 合并 到B库feature分支上了。

5)同时本地B库feature分支也会生成一条 commit 记录

在这里插入图片描述
此时如果发现合并错误可以通过 git reset --hard 'commit id' 回退到上一次commit的版本

6) 最后将本地合并的代码 git push 到B库线上仓库

cherry-pick

基本用法

git cherry-pick :将指定的提交 commit id 合并到其他分支

git cherry-pick commitid

举个例子,代码仓库有master和feature两个分支

    a - b - c - d   Master\e - f - g Feature

将提交 f 合并到 master 分支

# 切换到 master 分支
$ git checkout master# Cherry pick 操作
$ git cherry-pick f

完成上述操作后:代码库就变成了👇🏻,可以看到 master 分支的最新提交增加了一个 f

    a - b - c - d - f   Master\e - f - g Feature

cherry pick转移多个提交

cherry-pick 支持一次转移多个提交

$ git cherry-pick <commitid1> <commitid2>

上述命令是将 1 和 2 两次提交应用到当前分支,同时也会再当前分支生成一条新的 commit 提交。
如果要转移一系列的连续提交,可以使用下面的简洁语法

$ git cherry-pick commit1..commit9 

上述的命令可以转移 > 1 && ≤ 9 的所有提交。他们必须按照正确的顺序放置:提交 commit1 必须早于提交 commit9,否则命令将失效,但不会报错。
特别注意,上述的命令并不包含 commit1。如果要实现 ≥1 && ≤9,可以使用下面的语法

$ git cherry-pick commit1^..commit9 

cherry pick 配置项

常用配置:
1、-e,--edit

打开外部编辑器,编辑提交信息。

2、-n,--no-commit

只更新工作区和暂存区,不产生新的提交。

3、-x

在提交信息的末尾追加一行(cherry picked from commit …),方便以后查到这个提交是如何产生的。

4、-s,--signoff

在提交信息的末尾追加一行操作者的签名,表示是谁进行了这个操作。

cherry pick 代码冲突

1、--continue

用户解决代码冲突后,第一步将修改的文件重新加入暂存区(git add .),第二步使用下面的命令,让 Cherry pick 过程继续执行。

$ git cherry-pick --continue

2、--abort

发生代码冲突后,放弃合并,回到操作前的样子。

$ git cherry-pick --abort

3、--quit

发生代码冲突后,退出 Cherry pick,但是不回到操作前的样子。

$ git cherry-pick --quit

这篇关于多个git项目库之间的cherry-pick操作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/532292

相关文章

Python调用Orator ORM进行数据库操作

《Python调用OratorORM进行数据库操作》OratorORM是一个功能丰富且灵活的PythonORM库,旨在简化数据库操作,它支持多种数据库并提供了简洁且直观的API,下面我们就... 目录Orator ORM 主要特点安装使用示例总结Orator ORM 是一个功能丰富且灵活的 python O

Java实现检查多个时间段是否有重合

《Java实现检查多个时间段是否有重合》这篇文章主要为大家详细介绍了如何使用Java实现检查多个时间段是否有重合,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录流程概述步骤详解China编程步骤1:定义时间段类步骤2:添加时间段步骤3:检查时间段是否有重合步骤4:输出结果示例代码结语作

Java判断多个时间段是否重合的方法小结

《Java判断多个时间段是否重合的方法小结》这篇文章主要为大家详细介绍了Java中判断多个时间段是否重合的方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录判断多个时间段是否有间隔判断时间段集合是否与某时间段重合判断多个时间段是否有间隔实体类内容public class D

部署Vue项目到服务器后404错误的原因及解决方案

《部署Vue项目到服务器后404错误的原因及解决方案》文章介绍了Vue项目部署步骤以及404错误的解决方案,部署步骤包括构建项目、上传文件、配置Web服务器、重启Nginx和访问域名,404错误通常是... 目录一、vue项目部署步骤二、404错误原因及解决方案错误场景原因分析解决方案一、Vue项目部署步骤

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

linux下多个硬盘划分到同一挂载点问题

《linux下多个硬盘划分到同一挂载点问题》在Linux系统中,将多个硬盘划分到同一挂载点需要通过逻辑卷管理(LVM)来实现,首先,需要将物理存储设备(如硬盘分区)创建为物理卷,然后,将这些物理卷组成... 目录linux下多个硬盘划分到同一挂载点需要明确的几个概念硬盘插上默认的是非lvm总结Linux下多

golang内存对齐的项目实践

《golang内存对齐的项目实践》本文主要介绍了golang内存对齐的项目实践,内存对齐不仅有助于提高内存访问效率,还确保了与硬件接口的兼容性,是Go语言编程中不可忽视的重要优化手段,下面就来介绍一下... 目录一、结构体中的字段顺序与内存对齐二、内存对齐的原理与规则三、调整结构体字段顺序优化内存对齐四、内

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

java父子线程之间实现共享传递数据

《java父子线程之间实现共享传递数据》本文介绍了Java中父子线程间共享传递数据的几种方法,包括ThreadLocal变量、并发集合和内存队列或消息队列,并提醒注意并发安全问题... 目录通过 ThreadLocal 变量共享数据通过并发集合共享数据通过内存队列或消息队列共享数据注意并发安全问题总结在 J

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE