git 两个分支对比以及合并

news2024/9/22 15:38:42

git 两个分支对比以及合并

  • git 两个分支对比以及合并
    • 显示两个分支提示之间的差异
      • 使用图形化工具,如pycharm
    • 打补丁的一般流程
      • diff命令:生成补丁包文件
      • patch命令:打补丁命令
    • Git Merge 与 Rebase
      • [重要]使用 merge 命令来进行分支合并
      • rebase 命令使用

git 两个分支对比以及合并

git diff不加参数即默认比较工作区与暂存区。
git diff 命令在生成和应用补丁方面扮演着重要的角色。‌它允许开发者查看代码的差异,‌并且能够生成补丁文件,‌这些补丁文件包含了代码修改的差异部分,‌不包含任何文件的完整内容。‌

显示两个分支提示之间的差异

git branch -va
git diff branch_1 branch_2	

显示两个分支提示之间的差异,包括内容更改

--name-only 仅在提交信息后显示已修改的文件清单。
--name-status 显示新增、修改、删除的文件清单, 对变化的文件名和变化的状态进行打印。

–diff-filter=[(A|C|D|M|R|T|U|X|B)…[*]]仅选择已添加 (A)、已复制 (C)、已删除 (D)、已修改 (M)、重命名 (R)、类型(即常规文件、符号链接、子模块等)已更改 (T)、未合并 (U)、未知 (X) 或配对已中断 (B) 的文件。可以使用筛选器字符的任意组合(包括无字符)。将 *(全部或无)添加到组合中时,如果有任何文件与比较中的其他条件匹配,则选择所有路径;如果没有与其他条件匹配的文件,则不会选择任何内容。

此外,这些大写字母可以小写以排除。例如,–diff-filter=ad 排除添加和删除的路径。

使用图形化工具,如pycharm

本地分支和某个远端分支对比:

  • 绿色:本地分支多出来的文件
  • 蓝色:差异的文件
  • 灰色:目标分支有,本地分支没有的文件

在源码文件或目录上,右键,如下图选择某个分支要和你当前分支进行对比:
在这里插入图片描述

打补丁的一般流程

Git 提供了两种补丁方案,

  • 一是用git diff生成的UNIX标准补丁.diff文件,
  • 二是git format-patch生成的Git专用.patch 文件。

.diff文件只是记录文件改变的内容,不带有commit记录信息,多个commit可以合并成一个diff文件。
.patch文件带有记录文件改变的内容,也带有commit记录信息,每个commit对应一个patch文件。

git diff commit_id1 commit_id2 > test.patch 

git diff commit_id 会生成最后一次提交到目前修改过的内容补丁

git diff commit_id1 commit_id2 

会生成两次提交之间修改过的内容补丁

diff命令:生成补丁包文件

生成补丁是 Git 中一个非常有用的功能,可以将代码进行修改后生成的差异文件。使用 Git 的 diff 命令可以生成补丁文件,供其他开发者进行代码修改或者合并操作。

当diff比较新旧两个文件的差异后,将比较结果保存到patch文件里,然后使用patch命令利用补丁文件升级旧文件(打补丁),或把新文件回退成旧文件(卸载补丁)

patch命令:打补丁命令

TODO

Git Merge 与 Rebase

Git中Merge和Rebase是整合分支的常用方法。Merge保留完整历史记录,但可能产生复杂历史;Rebase创建干净线性历史,但改变提交哈希。

如果你想要保留完整的历史记录,包括所有的分支点和合并点,那么Merge是一个好选择。

个人使用习惯总结: 在main上只用merge,在自己的feature上优先使用rebase拉取main上最新代码。

[重要]使用 merge 命令来进行分支合并

使用 merge 命令来进行分支合并是 Git 中最重要的操作之一。

这种合并是将两个分支的历史合并到一起,现有的分支并不会被更改,它会比对双方不同的文件缓存下来,生成一个commit,去push

  • 优点: 安全,现有分支不会被修改

  • 缺点: 或多或少都会污染一点分支历史,在回看项目时会增加理解项目历史的难度

  • 用处: 一般用于公共master主分支

当你想要将一个分支的更改整合到另一个分支时,可以使用Merge。

假设你有一个主分支main和一个功能分支feature,你想将feature分支的更改合并到main分支。

  1. 切换到main分支:
git checkout main
  1. 使用git merge命令合并feature分支:
git merge feature

合并操作可以通过reset 命令来取消

git reset --merge

rebase 命令使用

Rebase是另一种整合分支的方法,它会将当前分支的更改“重新播放”在另一个分支的顶部。这意味着它会创建一个新的更改序列。

使用场景

  • 当你想要一个干净、线性的项目历史时。
  • 在将功能分支合并到主分支之前,确保功能分支的更新

如果你想用rebase将feature分支的更改整合到main分支。

  1. 切换到feature分支:
git checkout feature
  1. 使用git rebase命令将feature分支变基到main分支:
git rebase main

解决可能出现的冲突,并继续变基过程。

  1. 最后,切换到main分支,并使用git merge将变基后的feature分支合并进来

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2037033.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用 GPT-4 Vision 的 CLIP 嵌入来改进多模态 RAG

多模态 RAG 将附加模态集成到传统的基于文本的 RAG 中,通过提供额外的背景信息和基础文本数据来增强 LLM 的问答能力,从而提高理解力。 我们直接嵌入图像进行相似性搜索,绕过文本字幕的有损过程,以提高检索准确性。 使用基于 CL…

Ted靶机

端口扫描 靶机ip地址为 192.168.153.156 目录扫描 访问80端口 测试弱口令 根据响应包分析,存在弱口令 admin,admin 但是需要hash加密 加密后得到 8C6976E5B5410415BDE908BD4DEE15DFB167A9C873FC4BB8A81F6F2AB448A918 登录成功 有搜素框,测…

网站数据导出为excel 源码大全java php c# js python 与网络安全兼顾-阿雪技术观

一、阿雪技术观谈网站安全 1.保护用户隐私和数据 用户在访问网站时会提供各种个人信息,如姓名、地址、联系方式、信息等。如果网站存在安全漏洞,这些敏感信息可能会被黑客窃取,导致用户遭受身份盗窃、欺诈等 2.维护企业声誉和信任 一个安全可…

【Windows】Q-Dir(资源管理器)软件介绍

软件介绍 Q-Dir是一款免费的文件管理器软件,它可以让您更方便地浏览和管理计算机上的文件和文件夹。与Windows自带的资源管理器相比,Q-Dir具有更多的功能和选项。 安装教程 软件下载完成,解压软件。 点击Q-Dir.exe即可打开软件。 功能…

WPF WindowChrome、WindowStyle 自定义窗体样式

渐变参数 WindowChrome 这个图就是WindowChrome的模型。其中Caption区域,表示标题栏,就是它,允许窗体被鼠标拖动。GlassFrameThickness就是Aero窗体的透明边框(Aero主体只在部分操作系统中支持)。ResizeBorderThicknes…

从快到慢学习Git指令

Git是现在最流行的版本控制工具之一。无论是在开源社区还是企业软件开发中,Git都扮演着至关重要的角色。本文将根据不同的需求,分别提供快速上手和深入学习Git的指南。 如果你只想下载代码 如果你只是想下载GitHub或其他代码仓库的代码,那你只需要了解以下两个命令: git clo…

SpringBoot 整合 Elasticsearch 实现商品搜索

一、Spring Data Elasticsearch Spring Data Elasticsearch 简介 Spring Data Elasticsearch是Spring提供的一种以Spring Data风格来操作数据存储的方式,它可以避免编写大量的样板代码。 常用注解 常用注解说明如下: 注解名称 作用 参数说明 Docu…

Python面试宝典第34题:旋转图像

题目 给定一个n n的二维矩阵matrix表示一个图像,请你将图像顺时针旋转90度。 注意:你必须在原地旋转图像。这意味着,你需要直接修改输入的二维矩阵,而不能使用另一个矩阵来旋转图像。 示例 1: 输入:matri…

Spark SQL Catalyst工作流程

我们写的SQL语句,会经过一个优化器 (Catalyst),转化为 RDD,交给集群执行。 而Catalyst在整个Spark 生态中的地位也是至关重要的。 SQL到RDD中间经过了一个Catalyst,它就是Spark SQL的核心,是针对Spark SQL语句执行过程…

【计算机网络】LVS四层负载均衡器

https://mobian.blog.csdn.net/article/details/141093263 https://blog.csdn.net/weixin_42175752/article/details/139966198 《高并发的哲学原理》 (基本来自本书) 《亿级流量系统架构设计与实战》 LVS 章文嵩博士创造 LVS(IPVS) 章⽂嵩发…

Agile Modbus移植教程--基于GD32F103C8T6+RT-Thread+mdk5

主机移植 0.下载源码 开源地址:GitHub - loogg/agile_modbus 1.复制源码 1.2、目录结构 名称说明doc文档examples例子参考示例figures素材inc头文件移植需要src源代码移植需要util提供简单实用的组件移植需要 本次移植需要的有 参考demo 头文件 源码 从机辅助文件 2.添…

【中等】 猿人学web第一届 第5题 js混淆-乱码增强

请求流程 打开 调试工具,查看数据接口 https://match.yuanrenxue.cn/api/match/5 请求参数 请求参数携带了 page, m, f 3个字段, page为页数, m 为时间戳 像是 new Date().getTIme() 生成的 f 为时间戳 像是 Date.parse(new Date()) 生成的 …

Spring boot敏感参数加密配置

一,背景 在项目中很多参数会被配置到配置文件中,比如说密钥,用户名,数据库连接,账号密码之类的,如果用明文配置,会有一定的安全风险。为了减小风险,增加对敏感配置数据的加密配置。…

Gerrit 使用教程

一、Gerrit简介 Gerrit,一种开放源代码的代码审查软件,使用网页界面。利用网页浏览器,同一个团队的程序员,可以相互审阅彼此修改后的代码,决定是否能够提交,退回或是继续修改。它使用版本控制系统Git作为底…

LabVIEW光伏微网实验系统

开发了一个基于LabVIEW的光伏微网实验系统,系统主要服务于工程教育和技术研究,以提高学生对分布式电力系统的理解和操作能力。该实验系统能够模拟光伏微网的各种运行状态,包括能量的生成、存储和消费等,特别是在无电网状态下的独立…

Datawhale AI夏令营-大模型技术(微调)Task2打卡

1 输出结果要求 input:阅读文章本体与完成QAG的prompt target:题干、题目选项及答案 2 数据处理 2.1 Python 正则表达式 需要将文件中的数据读取出来,将语文数据与英语数据整理好后存储成可以微调的数据格式(csv与jsonl类型&a…

el-checkbox 状态不更新

文章目录 数据处理代码片段 🌰 大概举例原因解决方法 - 深拷贝forceUpdate - 强制更新 今天遇到了checkbox不更新的问题,相同的功能在其他地方正常使用,有些地方不能用。数据处理代码片段 🌰 大概举例 从现有数据中过滤出新的数据…

MySQL学习[4] ——MySQL锁

四、MySQL锁 4.1 MySQL有哪些锁? 4.1.1 全局锁 全局锁就是**对整个数据库实例加锁,主要用于全库逻辑备份**等场景。 flush tables with read lock # 加全局锁unlock tables # 解锁加上全局(读)锁后,整个数据库都…

网络安全-第二阶段-linux操作系统01

一. linux介绍: windows,mac,linux都是由unix系统发展而来。 linux:类unix系统; 二. Centos系统的安装: 可以去清华大学开源软件镜像站下载: 输入ip addr: 可以看到自己电脑的ip地址; 1. ssh远程连接linux: 使用windows或者linux的物理机或者虚拟机都可以连接上它,…

MPU6050+OLED读取姿态角(超级细讲)

STM32F103C8T6读取陀螺仪MPU6050的角度数据,使用6050自带DMP库姿态解算出各个方向的角度,并使用OLED实时刷新显示,同时可以将数据通过串口发送到计算机,每一组数据50ms。本操作过程简单,方便移植,显示屏接P…