Git(8)之分支间同步特定提交
Git(8)之分支间同步特定提交
Author:Once Day Date:2024年4月7日
漫漫长路有人对你微笑过嘛…
全系列文章可查看专栏: Git使用记录_Once_day的博客-CSDN博客
文章目录
- Git(8)之分支间同步特定提交
- 1. 分支间同步提交
- 2. `cherry-pick`同步分支间的特定提交
- 3. 实例展示
1. 分支间同步提交
在使用Git这个强大的分布式版本控制系统时,经常会遇到需要将一个分支的提交同步到另一个分支的情况。
第一种情况是同步分支上所有改动到另外一个分支,非常常见,这里只是简单介绍一下。
-
最直接的方法是使用
git merge命令。例如,想要把一个分支(比如feature)上的改动合并到另一个分支(比如master)时,可以先切换到目标分支master,然后执行git merge feature。这样,feature分支上的所有提交就会被合并到master上。如果遇到冲突,Git会提示需要手动解决。 -
另外一种方法是使用
git rebase命令。Rebase的意思是变基,简单来说就是把一个分支上的修改放到另一分支的最前面。这样做的好处是能够创建一个更干净、线性的提交历史。使用方法是先切换到要同步的分支,比如feature,然后执行git rebase master。这样feature分支就会把master分支上新的提交应用到feature分之前。在变基的过程中,如果发生冲突,也需要手动解决。
第二种情况是同步某一个特定的提交,例如需要把develop版本分支上的auto-test测试代码提交同步到temp版本分支上。
- 最常见的方式是手动把auto-test代码全部复制一遍,然后再提交新的commit到temp版本分支上,这个方式效率较低,需要人工同步每个改动,也容易产生遗漏。
- 通过
git stash命令暂存提交,然后在temp版本分支应用修改(apply stash),效率较好,但是需要提前保存改动信息,而且commit信息也还是需要在输入一遍。 - 使用
git cherry-pick命令选择一个或几个提交,然后在temp分支上重新应用。这个方式效率最高,代码改动和提交信息都是直接照搬原有develop分支,不需要额外输入信息。
在实际工作中,上述的几种方法都可以使用。不管是全自动化的同步还是手动同步,最好都人工再审核一遍,毕竟一旦出了问题,耗费时间和精力远比人工检查要多。
2. cherry-pick同步分支间的特定提交
git cherry-pick是一个非常实用的Git命令,它允许选择性地将某个分支上的单个提交(或一系列提交)应用到当前分支上。
这个命令的名称来源于“挑选樱桃”的比喻,意味着可以从众多提交中精选出需要的那几个。
git cherry-pick命令的基本格式如下,其中<commit-hash>是希望应用的提交的哈希值:
# 通过git log或者其他手段来获取commit iD
git cherry-pick <commit-hash>
如果这个提交能够顺利地应用到当前分支上,而没有任何冲突,那么可以看到一个新的提交出现在当前分支的提交历史中。这个新提交的内容与通过cherry-pick命令选取的原始提交的内容相同,但是它会有一个新的提交哈希值。
如果在应用某个提交时遇到了冲突,Git会停止cherry-pick操作,并需要手动编辑冲突的文件,最后使用git add命令来标记冲突已经解决。在解决完所有冲突并更新索引后,可以通过git cherry-pick --continue来继续应用提交。
如果决定不应用当前的cherry-pick操作,可以使用git cherry-pick --abort来取消。
git cherry-pick还支持一些有用的选项,例如:
-n或--no-commit:应用更改但不自动创建提交,允许手动合并多个提交的更改,并最终作成一个提交。-e或--edit:在提交时打开编辑器,让你可以编辑提交信息。-x:在提交信息中包含一个说明,指出提交是通过cherry-pick从哪个提交哈希值应用过来的。
git cherry-pick常用于修复bug,当在测试分支上发现了一个bug,并在该分支上修复后,可以通过cherry-pick将修复的提交应用到生产分支上。
3. 实例展示
首先确认需要同步的源分支和目标分支。
ubuntu->tdata:$ git branch -adevelop
* masterremotes/origin/HEAD -> origin/masterremotes/origin/master
从上述命令中,有四个分支,两个远程分支,两个本地分支。我们主要从develop分支同步最新提交到master分支上。
在master分支上通过git log获取提交commit(或者其他手段),如下所示:
ubuntu->tdata:$ git log develop
commit bc75713f30a34e292f59f39d439c08f7ea6b21ed (develop)
Author: Once Day <onceday@qq.com>
Date: Sun Apr 7 22:55:59 2024 +0800save filescommit d71a12145f1ccd8d8f93f1cc937b70fa22d3ce27 (HEAD -> master, origin/master, origin/HEAD)
Author: Once Day <onceday@qq.com>
Date: Sat Mar 9 21:50:05 2024 +0800save some
......
第一个提交就是需要同步的提交,复制其commit值,然后使用git cherry-pick命令同步。
ubuntu->tdata:$ git cherry-pick bc75713f30a34e292f59f39d439c08f7ea6b21ed
[master 69dc035] save filesDate: Sun Apr 7 22:55:59 2024 +08009 files changed, 405 insertions(+), 29 deletions(-)create mode 100644 cs-test/alias-test.ccreate mode 100644 cs-test/hash-test.ccreate mode 100644 perf-ana/git-sync-simple.shcreate mode 100755 perf-ana/git-sync.shcreate mode 100644 perf-ana/objdump-func.shubuntu->tdata:$ git log
commit 69dc035383d742c95ea2814972191d82ba9a91a3 (HEAD -> master)
Author: Once Day <onceday@qq.com>
Date: Sun Apr 7 22:55:59 2024 +0800save files
一般情况下,都是非常顺利直接同步,如果存在冲突,手动merge即可。
相关文章:
Git(8)之分支间同步特定提交
Git(8)之分支间同步特定提交 Author:Once Day Date:2024年4月7日 漫漫长路有人对你微笑过嘛… 全系列文章可查看专栏: Git使用记录_Once_day的博客-CSDN博客 文章目录 Git(8)之分支间同步特定提交1. 分支间同步提交2. cherry-pick同步分支间的特定提交…...
万得AI算法工程师一面面试题6道|含解析
节前,我们星球组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、参加社招和校招面试的同学,针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 今天…...
蓝桥杯23年第十四届省赛-异或和之和|拆位、贡献法
题目链接: 蓝桥杯2023年第十四届省赛真题-异或和之和 - C语言网 (dotcpp.com) 1.异或和之和 - 蓝桥云课 (lanqiao.cn) 参考题解: 蓝桥杯真题讲解:异或和之和 (拆位、贡献法)-CSDN博客 洛谷P9236 [蓝桥杯 2023 省 A]…...
Unity进阶之路(1)回顾与思考
首先呢,博主在这里先反思一下自己这几个月,其实并没有多少进步。 在寒假中,博主几乎是独立编写了一个小程序的完整UI和一个Uniapp的雏形。那段时间是博主生产力最高的时间段。几乎是每天8点起来开始编写代码,晚上一直忙到很晚。 …...
【C语言】——指针八:指针运算笔试题解析
【C语言】——指针八:指针运算笔试题解析 一、题一二、题二三、题三四、题四五、题五六、题六七、题七 一、题一 //程序输出结果是什么 int main() {int a[5] { 1,2,3,4,5 };int* ptr (int*)(&a 1);printf("%d, %d", *(a 1), *(ptr - 1));return…...
JVM字节码与类的加载——class文件结构
文章目录 1、概述1.1、class文件的跨平台性1.2、编译器分类1.3、透过字节码指令看代码细节 2、虚拟机的基石:class文件2.1、字节码指令2.2、解读字节码方式 3、class文件结构3.1、魔数:class文件的标识3.2、class文件版本号3.3、常量池:存放所…...
小程序如何通过公众号发送新订单提醒
当客户在小程序上下单后,公众号会发送订单通知,这可以让管理员及时获知用户下单情况,方便及时处理订单和提供服务。下面是具体介绍如何设置公众号来发送订单服务通知。 方式一:通过采云公众号发送订单通知 此种方式是默认的通知…...
聊聊公众号最让我不爽的两个痛点
本文首发于 Python猫 微信公众号最让我不爽的地方有两个,而且有很多人虽然也不爽,却不知道原因。 本文想聊聊公众号的两个痛点,因为我经常收到私信问这两个问题,本文算是一次集中的回复吧。 第一个不爽的点是公众号会屏蔽外链&…...
【leetCode】2810. 故障键盘
文章目录 [2810. 故障键盘](https://leetcode.cn/problems/faulty-keyboard/)思路一:模拟代码:思路二:双端队列代码: 2810. 故障键盘 思路一:模拟 用StringBuilder来拼贴字符遍历字符串,如果遇到i,对拼贴好…...
xshell7连接ubuntu18.04
🎡导航小助手🎡 1.查看ubuntu IP2.开启openssh-server3.静态IP设置4.Xshell连接 1.查看ubuntu IP 输入下面命令查看IP ifconfig -a可以看到网卡是ens33,IP为192.168.3.180。 2.开启openssh-server 1、执行下句,下载SSH服务 s…...
真正的力量:实力与人际关系的平衡艺术
在当今社会,人们常常在追求个人发展和建立良好人际关系之间寻找平衡。有一种观点认为,“没有实力,就不要对别人好。不然,很容易被定义为讨好。”这句话在一定程度上揭示了实力与人际关系之间的微妙联系。本文将探讨这一观点的深层…...
Acwing.1388 游戏(区间DP对抗思想)
题目 玩家一和玩家二共同玩一个小游戏。 给定一个包含 N个正整数的序列。 由玩家一开始,双方交替行动。 每次行动可以在数列的两端之中任选一个数字将其取走,并给自己增加相应数字的分数。(双初始分都是 0分) 当所有数字都被…...
Numpy数组转换为csv文件
参考:Converting Numpy Array to CSV 在数据分析和处理中,经常会涉及到将数据从一个形式转换为另一个形式的操作。 其中,将Numpy数组转换为csv文件是一种常见的操作,因为csv文件是一种通用的数据存储格式,方便与其他软…...
替代安全指标(Surrogate Safety Measures (SSM) )
替代安全措施(Surrogate Safety Measures (SSM) )用于从数据中寻找接近碰撞,或可能发生(但实际没有发生)的碰撞事件。 SSM的两个合格标准: (1)它应该来自与碰撞直接相关的交通冲突&…...
usb_camera传输视频流编码的问题记录!
前言: 大家好,今天给大家分享的内容是,一个vip课程付费的朋友,在学习过程中遇到了一个usb采集的视频数据流,经过ffmpeg编码,出现了问题: 问题分析: 其实这个问题不难,关键…...
Linux安装nginx保姆级教程
文章目录 前言一、nginx安装(保姆级教程)1.安装nginx依赖2.安装wget3.创建nginx安装目录4.下载nginx5.查看下载好的nginx6.解压缩7.查看当前目录下的文件→进入nginx-1.8.0目录→查看当前目录下的文件8.安装nginx9.查看nginx安装目录并启动nginx10.网络请…...
leetcode-判断二分图
. - 力扣(LeetCode) 存在一个 无向图 ,图中有 n 个节点。其中每个节点都有一个介于 0 到 n - 1 之间的唯一编号。给你一个二维数组 graph ,其中 graph[u] 是一个节点数组,由节点 u 的邻接节点组成。形式上,…...
算法day30 回溯6
332 重新安排行程 给你一份航线列表 tickets ,其中 tickets[i] [fromi, toi] 表示飞机出发和降落的机场地点。请你对该行程进行重新规划排序。 所有这些机票都属于一个从 JFK(肯尼迪国际机场)出发的先生,所以该行程必须从 JFK …...
分享three.js实现乐高小汽车
前言 Web脚本语言JavaScript入门容易,但是想要熟练掌握却需要几年的学习与实践,还要在弱类型开发语言中习惯于使用模块来构建你的代码,就像小时候玩的乐高积木一样。 应用程序的模块化理念,通过将实现隐藏在一个简单的接口后面&a…...
gpt的构造和原理
gpt是序列预测模型。 问答是通过确定问答格式样本训练出来的!比如“Q:xxxx.A:xxx"本质还是根据前面的序列预测后面的序列。在自回归训练过程中,文本序列(可能包含问题和紧随其后的答案)被视为一个整体输入到模型…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...
微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...
PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...
ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
基于 TAPD 进行项目管理
起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…...
安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲
文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...
springboot 日志类切面,接口成功记录日志,失败不记录
springboot 日志类切面,接口成功记录日志,失败不记录 自定义一个注解方法 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/***…...
FFmpeg avformat_open_input函数分析
函数内部的总体流程如下: avformat_open_input 精简后的代码如下: int avformat_open_input(AVFormatContext **ps, const char *filename,ff_const59 AVInputFormat *fmt, AVDictionary **options) {AVFormatContext *s *ps;int i, ret 0;AVDictio…...
