多个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

相关文章

vite搭建vue3项目的搭建步骤

《vite搭建vue3项目的搭建步骤》本文主要介绍了vite搭建vue3项目的搭建步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1.确保Nodejs环境2.使用vite-cli工具3.进入项目安装依赖1.确保Nodejs环境

IDEA和GIT关于文件中LF和CRLF问题及解决

《IDEA和GIT关于文件中LF和CRLF问题及解决》文章总结:因IDEA默认使用CRLF换行符导致Shell脚本在Linux运行报错,需在编辑器和Git中统一为LF,通过调整Git的core.aut... 目录问题描述问题思考解决过程总结问题描述项目软件安装shell脚本上git仓库管理,但拉取后,上l

idea+spring boot创建项目的搭建全过程

《idea+springboot创建项目的搭建全过程》SpringBoot是Spring社区发布的一个开源项目,旨在帮助开发者快速并且更简单的构建项目,:本文主要介绍idea+springb... 目录一.idea四种搭建方式1.Javaidea命名规范2JavaWebTomcat的安装一.明确tomcat

pycharm跑python项目易出错的问题总结

《pycharm跑python项目易出错的问题总结》:本文主要介绍pycharm跑python项目易出错问题的相关资料,当你在PyCharm中运行Python程序时遇到报错,可以按照以下步骤进行排... 1. 一定不要在pycharm终端里面创建环境安装别人的项目子模块等,有可能出现的问题就是你不报错都安装

使用Java填充Word模板的操作指南

《使用Java填充Word模板的操作指南》本文介绍了Java填充Word模板的实现方法,包括文本、列表和复选框的填充,首先通过Word域功能设置模板变量,然后使用poi-tl、aspose-words... 目录前言一、设置word模板普通字段列表字段复选框二、代码1. 引入POM2. 模板放入项目3.代码

利用Python操作Word文档页码的实际应用

《利用Python操作Word文档页码的实际应用》在撰写长篇文档时,经常需要将文档分成多个节,每个节都需要单独的页码,下面:本文主要介绍利用Python操作Word文档页码的相关资料,文中通过代码... 目录需求:文档详情:要求:该程序的功能是:总结需求:一次性处理24个文档的页码。文档详情:1、每个

Python内存管理机制之垃圾回收与引用计数操作全过程

《Python内存管理机制之垃圾回收与引用计数操作全过程》SQLAlchemy是Python中最流行的ORM(对象关系映射)框架之一,它提供了高效且灵活的数据库操作方式,本文将介绍如何使用SQLAlc... 目录安装核心概念连接数据库定义数据模型创建数据库表基本CRUD操作创建数据读取数据更新数据删除数据查

Go语言中json操作的实现

《Go语言中json操作的实现》本文主要介绍了Go语言中的json操作的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录 一、jsOChina编程N 与 Go 类型对应关系️ 二、基本操作:编码与解码 三、结构体标签(Struc

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni

MyCat分库分表的项目实践

《MyCat分库分表的项目实践》分库分表解决大数据量和高并发性能瓶颈,MyCat作为中间件支持分片、读写分离与事务处理,本文就来介绍一下MyCat分库分表的实践,感兴趣的可以了解一下... 目录一、为什么要分库分表?二、分库分表的常见方案三、MyCat简介四、MyCat分库分表深度解析1. 架构原理2. 分