git diff 的简单使用(比较版本区别)
假如我们修改viewMail.vue 文件(部分代码)
从
//根据ID获取详情
getById () {
let that = this;
this.viewMailModal = true;
this.loading = true;
post('/presidentmailinfoController/selectByPrimaryKey', {id: this.viewId, initiatorType: 3}).then(res => {
that.loading = false;
if (res.success) {
let mail = res.data
// mail.content = that.formatTxt(mail.content)
that.imgList = mail.fileList
that.mailInfo = mail;
}
});
},
修改为
//根据ID获取详情
getById () {
let that = this;
this.viewMailModal = true;
this.loading = true;
// post('/presidentmailinfoController/selectByPrimaryKey', {id: this.viewId}).then(res => {
post('/presidentmailinfoController/selectByPrimaryKey', {id: this.viewId, initiatorType: 3}).then(res => {
that.loading = false;
if (res.success) {
let mail = res.data
// mail.content = that.formatTxt(mail.content)
that.imgList = mail.fileList
that.mailInfo = mail;
}
});
},
就在post 位置 多加了 一行注释和 多加了一个字段 initatorType 字段 ,好吧这不重要,我只是不行写简单的例子了,直接用的项目中的代码作为例子。。我们记住区别就行了。
修改完毕后我们打开 git 命名行。
运行命令 git status 查看我们 工作区的修改的文件
git 告诉我们 一个viewMail.vue文件修改了。但是没有告诉我们这个文件里 具体修改了哪些内容。此时git diff 就排上的用场。 他可以用于比较现在 工作区(未提交到暂存区) 与 暂存区(已经通过 git add 和 git commit 提交了)。具体的修改变化。
下面我们来运行一下 git diff 命名。查看一下变化。
具体的变化就一目了然了,git 告诉我们 删除了红色行 ,新增了 绿色 行的代码。这正是我们的修改。
其实此时运行的 git diff 相当于 git diff HEAD (HEAD 指向的是 local repository 中最新提交的版本)。
我们再来看一下运行 git diff HEAD
两次的运行结果是一样的。我们再来看一下git diff 的简单说明:
git diff:是查看 workspace(工作区) 与 index(暂存区) 的差别的。
git diff --cached:是查看 index(暂存区) 与 local repositorty(本地仓库) 的差别的。
git diff HEAD:是查看 workspace 和 local repository 的差别的。(HEAD 指向的是 local repository 中最新提交的版本)
注:git diff 后跟两个参数,如果只写一个参数,表示默认跟 workspace中的代码作比较。git diff 显示的结果为 第二个参数所指的代码在第一个参数所指代码基础上的修改。如,git diff HEAD 表示 workspace 在 最新commit的基础上所做的修改
附:git 的 四个工作区(来源:https://www.cnblogs.com/qdhxhz/p/9757390.html)
由上图可以看出,通常情况下, 当我们运行的 git add . ,是将工作区(workspace)的代码提交到了暂存区(index)中,然后我们经常运行的 git commit -m “修改代码提交说明”
是将暂存区中的代码提交到了本地仓库(local Repository)中。再往后就是我们通过 git push 将本地仓库的代码提交到远程仓库了(这里不多说了,主要说比较版本区别)。
这样就可以解释与git diff 和 git diff HEAD 的运行结果一样的问题了:
虽然说 git diff 是 比较 的工作区 与 暂存区 的区别,git diff HEAD 比较的是 工作区和 本地仓库的 区别。
但是有一点是,我在修改 代码前已经 运行过来 git add . 和 git commit -m "。。。" 命令了。所以 暂存区的 内容和 本地仓库的内容是一样的。
运行完后通过 git status 查看状态。已经告诉我没有要提交 的东西了。
所以运行 git diff 和 运行 git diff HEAD 的命令 结果是一样的。
下面我们再来看一下如果已经把工作区(workspace)中的代码提交到了暂存区(index)和本地仓库(local Repository)中怎么查看与上一个版本的区别。
运行如下命令进行提交:
提交完毕后查看是否还有要提交的内容
好的,已经提示没有要提交的内容了。
下面我们再来查看一下运行 git diff 和 git diff HEAD 看是否还有效果:
可以看出这两个命令已经没有输出的东西了。
相信认真看完上面内容的你,已经知道为什么了。因为此时 工作区(workspace)和 暂存区(index)、本地仓库(local Repository)的最新版本代码 都是一样的了。所以已经比较不出东西了。
那么此时我们想看这一版本的代码和上一版本的代码区别,就得使用 git diff HEAD^ 我们知道到 HEAD 代码 本地仓库的最新版本, 那么上最新版本的上一个版本就用 HEAD^ 表示, 依次类推 那么最新版本的 上一个版本的上一个版本就是 HEAD^^
那么问题来了,我们如果我们比较的版本比较久远,就会写好多 ^^^...... 很麻烦,也容易把自己写晕。所以git 还有另一种写法 git diff HEAD~X X 代表^ 的个数。 即: git diff HEAD~1 代表最新版本的上一个版本。 git diff HEAD~2 代表最新版本的上一个版本的 上一个版本。
下面我们来运行一下(看一下当前最新版本与上一个版本的区别)
很完美的展现了我们修改的代码。
我们再用 git diff HEAD~1 来查看一下。
结果是一样的。
这就是git diff 的一些简单用法。具体用法请见官网。https://git-scm.com/docs/git-diff
附:
参考文章:
git: 提交前查看修改 git diff,HEAD^, HEAD~i
https://blog.csdn.net/GW569453350game/article/details/46998395
【Git】(1)---工作区、暂存区、版本库、远程仓库
https://www.cnblogs.com/qdhxhz/p/9757390.html
git diff的最全最详细的4大主流用法:
https://blog.csdn.net/wq6ylg08/article/details/88798254
git diff 的简单使用(比较版本区别)的更多相关文章
- Git学习笔记(2)——版本的回退,和暂存区的理解
本文主要记录了版本的回退,以及工作区,暂存区概念的理解. //开始之前,先回顾上次的内容,修改文件如下,并提交到版本库. Git is a distributed version control sy ...
- git diff 以及解决代码冲突
我是使用一台电脑测试, 然后在本地电脑创建了两个工作目录.专门用来模拟两个人提交代码.假设a.b两个人.只使用一个master分支做测试, 没有建立其他的分支. 主要就是为了研究冲突的解决方式.感觉g ...
- git学习(五):git diff魔法
不同参数下git diff输出并不相同,理解了工作区,暂存区和版本库的关系之后就很容易理解diff了. 工作区.暂存区和版本库的目录树浏览 清除工作区中未被git管理的文件 git clean -fd ...
- [译]如何比较master分支上与git上任意的一个老版本的区别?
原文来源:https://stackoverflow.com/questions/5586383/how-to-diff-one-file-to-an-arbitrary-version-in-git ...
- [原]git的使用(一)---建立本地仓库、add和commit、status和git diff、版本回退使用git reset
在window下已经安装了git的环境 1.建立本地仓库 mkdir test #建立test目录 cd test #进入目录 git init # ...
- git diff比较版本差异(生成补丁)
1.git diff [<options>] <commit> <commit> options 使用--name-only(git diff HEAD cd504 ...
- git diff 生成patch, git apply patch 打补丁方法说明,以及分支管理的简单操作。
git diff 简易操作说明 先git log 查看commit ID, 记录你想要打的补丁的ID 比如说: git log commit 4ff35d800fa62123a28b7bda2a04e ...
- 简单概述 .NET Framework 各版本区别
目前已发行的版本有1.0.1.1.2.0.3.0.3.5.4.0.4.5(及4.5.1.4.5.2).4.6(及4.6.1). 1.0版本:最初的.net framework版本,作为一个独立的工具包 ...
- Git_git diff 与 git diff -- cached 区别
1.首先,打开一个干净的工作区 2.对文件进行修改 3.使用 git diff 进行查看(这里的解释可能不是很准确,暂时这么理解!) 4. 执行 git add 将工作区中的内容add到stage, ...
随机推荐
- VMware下的CentOS7在桥接模式下,设置静态ip联网
之前在虚拟机下联网都用的是NAT模式,但现在做一个项目需要实现在两台笔记本电脑中的VMware虚拟机中的CentOS联网, 从网上查资料显示比较常规的方式是桥接模式.第一次用桥接模式联网,在网上查了很 ...
- OpenResty之 lua_shared_dict 指令
1. lua_shared_dict 指令介绍 原文: lua_shared_dict syntax:lua_shared_dict <name> <size> default ...
- 黑马在线教育项目---34-37、webuploader实现用户头像的异步上传
黑马在线教育项目---34-37.webuploader实现用户头像的异步上传 一.总结 一句话总结: 启迪:可以多看学习视频,在看电影看电视的时候看的确是不错的选择 1.关于软件的发行版本? 第1阶 ...
- HearthBuddy Ai 调试实战2 在使用海巨人的时候,少召唤了一个图腾(费用是对的)
问题 游戏面板 8是青玉之爪13是海巨人17是恐狼前锋 64是萨满 66是圣骑士63,99,46,是微型木乃伊[其中99和46都是2血3攻,63是2血1攻]57是鱼人木乃伊 微型木乃伊 "L ...
- jQuery源码解读----part 1
来源:慕课网 https://www.imooc.com/video/4392 jQuery整体架构 jQuery按我的理解分为五大块,选择器.DOM操作.事件.AJAX与动画, 那么为什么有13个模 ...
- 神经网络(NN)实现多分类-----Keras实现
IRIS数据集介绍 IRIS数据集(鸢尾花数据集),是一个经典的机器学习数据集,适合作为多分类问题的测试数据,它的下载地址为:http://archive.ics.uci.edu/ml/machi ...
- Python中bytes与字符串的相互转化
代码: # bytes转字符串方式一 b=b'\xe9\x80\x86\xe7\x81\xab' string=str(b,'utf-8') print(string) # bytes转字符串方式二 ...
- Qt 开源串口工具serialplot
一.总结 serialplot,可视化很强大的串口收发工具.源代码:https://bitbucket.org/hyOzd/serialplot 1.serialplot用到了qwt插件,所以先安装好 ...
- 如何通过Exchange2010 OWA更改过期密码
很多Exchange 2003管理员都通过IISADMPWD虚拟目录为员工提供用户密码修改功能,这大大方便了移动用户和非加入域用户在密码到期时的更改操作.您也许已经注意到:Windows Server ...
- 【VS开发】GDI+ 用CImage类来显示PNG、JPG等图片
系统环境:Windows 7 软件环境:Visual Studio 2008 SP1 本次目的:实现VC单文档.对话框程序显示图片效果 CImage 是VC.NET中定义的一种MFC/ATL共享类,也 ...