git diff 命令6种使用场景

news2024/11/19 10:43:37

目录

一、背景&目标

二、git三个区了解

三、git diff 6种场景介绍

3.1 工作区和暂存区差异对比

3.2 工作区和版本库之间差异

3.3 暂存区和版本库之间差异对比

3.4 本地版本库之间提交记录对比

3.5 不同分支对比

3.6 不同分支下同一文件对比

 四、git diff 中@@ -x1,y1 +x2,y2 表示的意思

4.1 demo

4.2 具体解释


一、背景&目标

在之前公司中大家合并代码都是自己解决冲突,然后提交一个MR,具体负责人只是进行简单的代码查看和MR,所以并没了解过git其他命令,因为用不到。但是最近小伙伴们一个需求少的会创景3-4个分支,多的有7-8个分支,上线时自己合并代码是一件比较“艰难”的事情,所以我们需要git的diff 命令来查看具体区别,但是diff 有多种使用场景下面我们来了解一下;

二、git三个区了解

因为diff的介绍是离不开这三个区,所以优先了解一下这三个区;

Git中的划分为工作区(Working Directory),暂存区(Index,也就是Stage区),版本库(也就是每次提交commit以后的版本) 

工作区、暂存区、本地版本库三个区具体讲解见文章:git 工作区、暂存区、版本库三个区域介绍

三、git diff 6种场景介绍

3.1 工作区和暂存区差异对比

3.1.1 工作区和暂存区之间的差异

git diff  --stat

这个命令展示工作区和暂存区之间有区别的文件,以及该文件中有多少区别;

 从这里可以看到工作区和暂存区之间有2个文件被修改过,每个文件中有1处改动;

3.1.2 工作区和暂存区之间的详细差异

git diff 

这个命令显示的是详细的差异,比如是哪个文件中的哪行有变化; 

相比上面对比情况来看,工作区和暂存区(index 2e6f7ce...)中文件有区别,具体去区别会在下面展示。看上面1、2、3 发现1说明了工作区和暂存区中哪个记录有区别,2中列出了具体文件,3中展示具体文件中具体区别;

3.2 工作区和版本库之间差异

3.2.1 工作区和版本库之间差异

git diff HEAD  --stat
git diff commit_id --stat  

这个命令展示工作区和版本库之间有区别的文件,以及该文件中有多少区别;

可以看到这里是有2个文件被修改了,每个文件中只修改了1处;

3.2.2  工作区和版本库之间详细差异

git diff HEAD
git diff commit_id

 和之前工作区和暂存区一样,详细展示了具体差异;

3.3 暂存区和版本库之间差异对比

如果需要比较暂存区和版本库之间的差异,需要添加–cahced ,其他的指令类似,包括–stat;

 git diff --cached HEAD --stat
 git diff --cached commit_id --stat

暂存区和本地版本库之间差异,因为在本地修改后没有执行git add . 所以目前修改的东西都在工作区,所以暂存区和本地版本库是一致的;

git diff --cached HEAD
git diff --cached commit_id

3.4 本地版本库之间提交记录对比

3.4.1 本地版本库之间提交记录整体对比

git diff  e8f4da5267e 2a010f1ff6  --stat

查看本地版本库之间的差异,具体执行如下:

展示两个commit 之间有1个文件被修改了,改动有4行;

3.4.2 本地版本库之间提交记录详细对比

git diff  e8f4da5267e 2a010f1ff6

展示具体文件之间的区别

 从执行结果看到老文件的从199行开始有10行代码变动,而新文件中从199行开始有6行变动;

3.5 不同分支对比

3.5.1 两个分支整体对比

git diff branch1 branch2 --stat

 可以看到branch1和branc2两个分支有20个文件被改动,新增191行,删除64行;

3.5.2 两个分支详细对比

git diff branch1 branch2

 和其他对比是一样的,详细展示两个分支之间具体文件中的不同;

3.6 不同分支下同一文件对比

上面两种是来看分支之间不同的,但是没法对比两个分支中同一个文件具体有哪些区别,可以使用下面命令来对比;

说明:如果是代码 则分支后面不用加“--” 就能对比,但是配置文件不行,所以如果查看配置文件的区别还是要添加“--”的;

 git diff master_12 release_12  -- src/main/resources/bootstrap-dev.yml

不同分支,同一个文件对比如下:

 从上面文件看,这个文件是新建的,之前老文件没有,新文件中有影响的32行;

四、git diff 中@@ -x1,y1 +x2,y2 表示的意思

其实从上面我们也可以看到,只要是明细对比总会有@@-x1,y1 +x2,y2这样的值,那这些值代表什么那,如果明白这些会对我们有很大帮助,下面来看看具体代表含义;

4.1 demo

4.2 具体解释

@@后面的两个数字:“-19,7”,表示a文件中第19行开始的后面7行,“+19,6”表示以下数据是b文件中第19行开始后的后面6行。其中“-”表示a文件,“+”表示b文件。下一行用“-”号开头的表示a文件变成b文件的时候,这一行被删除。用“+”开头的则表示a文件变成b文件的时候,这一行被加入。没有正负号开头的部分则表示没有进行修改。

OK到这里git中diff命令的使用场景介绍结束了,大家有问题的可以在评论区留言或私信我哦!

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

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

相关文章

非零基础自学Golang 第12章 接口与类型 12.3 接口嵌入

非零基础自学Golang 文章目录非零基础自学Golang第12章 接口与类型12.3 接口嵌入第12章 接口与类型 12.3 接口嵌入 接口嵌入,也叫接口组合,在其他语言中,这种接口的组合叫作继承;Go语言舍弃了繁杂的继承体系,但继承这…

48页智慧城市大数据可视化平台建设方案

目 录 1. 概述 1.1 需求分析 1.2 采取策略 1.3 方案目标 2. 智慧城市解决方案 2.1 架构说明 2.1.1 整体架构 2.1.2 规划架构 2.1.3 云平台架构 2.2 建设内容 2.2.1 云计算公共支撑平台 2.2.2 智慧规划 2.2.3 智慧管网 2.2.4 智能政务 2.2.5 智慧交通 2.2.6 智慧…

两台笔记本之间快速传输文件,两台电脑之间快速传输大量文件

想用自己的笔记本电脑给同事的电脑传文件,却发现自己和同事都没有带U盘和数据线,怎么办?两台笔记本之间快速传输文件?接下来介绍的方法你可能用得到。 方案一、微信、QQ传输文件 简单的方法就是两台电脑都登陆聊天工具&#xff0…

小学生C++编程基础 课程7(B)

904.等差数列 (课程7) 登录 905.双等差数列 (课程7) 登录 906.打印数列1 (课程7) 登录 907.打印数列2 (课程7) 难度:1 登录 908.对称数列 (课程7) 登录 909.个位数是7 (课程7) 登录 910.打印数列3 (课程7) 登录…

【AI理论学习】n-gram语言模型和神经网络语言模型

n-gram语言模型和神经网络语言模型什么是语言模型语言模型的计算什么是n-gram模型n-gram平滑技术什么是神经网络语言模型(NNLM)?基于前馈神经网络的模型基于循环神经网络的模型语言模型评价指标总结参考资料什么是语言模型 语言模型是自然语…

重磅!张文宏最新防治指南来了!

文 | 闲欢来源:Python 技术「ID: pythonall」最近全国各地最热门的话题恐怕都是跟“羊”有关的了。混乱时期两周之前,在所有人猝不及防的情况下,国家宣布放开疫情防控。从此我们再也不用每天排队做核酸,上班或者出去完也不用处处设…

二维Poisson方程五点差分格式与Python实现

最近没怎么写新文章,主要在学抽象代数下学期还有凸分析好累的一学期哦对,我不是数学系的,我是物理系的。而且博主需要澄清一下,博主没有对象,至少现在还没有。好,兄弟们,好习惯,先上…

SSM鹊巢大连分公司分销商管理系统

开发工具(eclipse/idea/vscode等):idea 数据库(sqlite/mysql/sqlserver等):mysql 功能模块(请用文字描述,至少200字):、主要功能 一、:人员管理:自己派遣到各个地区的员工,也就是分销商&#xf…

Java平衡树之红黑树代码实现过程详解(2)

红黑树 前面介绍了2-3树,可以看到2-3树能保证在插入元素之后,树依然保持平衡状态,它的最坏情况下所有子结点都是2-结点,树的高度为lgN,相比于我们普通的二叉查找树,最坏情况下树的高度为N,确实保证了最坏情…

药学专业转行软件测试,真的可以月薪过万吗?

转行原因 我在大学里学的是药学专业,毕业之后也顺利从事了对口的工作——药物分析。工作很稳定,但是内容很繁琐,薪资也一般,但从我自己内心来说从来没有开心过,因为我不想从事这样枯草并且一眼就可以看到老的人生。 …

常见的DDoS攻击方式和预防方法

DDoS攻击指分布式拒绝服务攻击,即处于不同位置的多个攻击者同时向一个或数个目标发动攻击,或者一个攻击者控制了位于不同位置的多台机器并利用这些机器对受害者同时实施攻击。以下是三种常见的DDoS攻击方式: 1.TCP洪水攻击(SYN …

ADI Blackfin DSP处理器-BF533的开发详解65:JPEG解码(含源码)

硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 代码实现功能 代码实现了将 480*272 尺寸的 JPEG 数据解码为 RGB888 数据功能,调用了 JPEG 解码库函数。 JPEG 图像数据以.dat 文件…

FineReport报表工具制作图表-JS实现下拉框选择后复选框默认全选

1. 概述 1.1 预期效果 参数联动查询时,希望下拉框选择后,复选框可以跟着选中全部所有参数值,效果如下图所示: 1.2 实现思路 参数联动查询时,希望下拉框选择后,复选框可以跟着选中全部所有参数值给下拉框添…

六、http模块

HTTP —— 超文本传输协议,用于规范客户端浏览器和服务端以何种格式进行通信和数据交互;HTTP由请求和响应构成的,是一个标准的客服端服务器模型。 HTTP请求响应过程 先简单的来了解以下HTTP的请求响应过程:1.地址解析&#xff1a…

深度学习实验(四)——卷积神经网络编程

深度学习实验四:卷积神经网络编程 本次实验练习使用torch.nn中的类设计一个卷积神经网络进行MNIST手写体数字图像分类。 name x#填写你的姓名 sid B02014152#填写你的学号print(姓名:%s, 学号:%s%(name, sid))姓名:x, 学号:B02014152import torch import torch.nn as nn im…

完全背包问题(超级详细地讲解优化过程)

完全背包问题一、问题描述二、思路分析1、状态转移方程2、循环设计三、代码模板1、朴素版2、优化版(1)时间优化(2)空间优化一、问题描述 二、思路分析 完全背包和01背包的区别就在于01背包中,每个物品只能选择一次&am…

Java架构师大厂面试致命十连问,你接得住吗?

1.什么是缓存雪崩?怎么解决? ​ 编辑切换为居中 添加图片注释,不超过 140 字(可选) 通常,我们会使用缓存用于缓冲对 DB 的冲击,如果缓存宕机,所有请求将直接打在 DB,造…

故事分享|27岁的Leader:要成为别人的灯塔,自己得先会“发光”

学习编程的年龄跨度很大,有还在读小学的10后小朋友,也有子孙满堂的八十岁老太太,但主力军,当属90后。 很多年前,90后还是许多人口中“垮掉的一代”。 许多年过去了,当90后逐渐摘掉不成熟的标签&#xff0…

ssh前置代理

ssh前置代理ssh前置代理Linux和mac配置ssh前置proxyUbuntu和mac的ncCentos的ncWindows的ssh前置proxyssh前置代理 适用于服务器无法直接连接过去,需要用proxy才可以连接的场景. Linux和mac配置ssh前置proxy nc属命令属于nmap-ncat包 Centos的nmap-ncat版本太低了,需要到https:…

学习笔记 - MapStruct 映射工具

学习笔记 - MapStruct 映射工具简介Maven 依赖实体类 Entity数据传输对象 DTO映射接口测试类IDEA 插件与 Lombok 一起使用参考资料简介 MapStruct是一个代码生成器,它基于约定优于配置的方法,极大地简化了Java bean类型之间映射的实现。 生成的映射代码使…