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

原文地址:https://www.cnblogs.com/taohuaya/p/11107264.html

时间: 2024-11-02 20:52:52

git diff 的简单使用(比较版本区别)的相关文章

Git学习笔记(2)——版本的回退,和暂存区的理解

本文主要记录了版本的回退,以及工作区,暂存区概念的理解. //开始之前,先回顾上次的内容,修改文件如下,并提交到版本库. Git is a distributed version control system. Git is free software distributed under the GPL. 1.查看版本库的信息 [email protected]:~/joe/learngit$ git log //可以看到,下面有3个版本 commit 71038bf6cbd05ef559549

git diff 与 git diff -- cached 区别

1.首先,打开一个干净的工作区 2.对文件进行修改 3.使用 git diff  进行查看(这里的解释可能不是很准确,暂时这么理解!) 4. 执行 git add 将工作区中的内容add到stage,再次 执行 git diff ,发现没有内容. 5.执行 git diff --cached 6.执行 git commit 提交的情况是:

Git和Github简单教程(转)

这篇文章只挑一部分命令来讲,差不多够用就行的程度.如果需要其他命令,到时候再去其他地方了解就行了先在Github上写好再搬过来的:本文Github链接 目录: 零.Git是什么 一.Git的主要功能:版本控制 二.概览 三.Git for Windows软件安装 四.本地Git的使用 五.Github与Git的关联 六.Github的其他介绍 七.一些可能碰到的问题 零.Git是什么 我才不告诉你嘞 一.Git的主要功能:版本控制 版本:想想你平时用的软件,在软件升级之后,你用的就是新版本的软件

[git] github 使用简单记录

前提 :1. 已有 github 账号.2. 已安装 git .3. 在 github 和 本地 git 客户端交互秘钥.(这步我记得需要做,有点久远,不确定.) 正文: 下面是一个简单的例子.先在 github 创建新的库,在本地拉取 github 的新库,将需要需要上传到 github 的文档放到本地库,然后通过 git 上传到 github 上面.具体步骤如下: 1. 在 github 上面创建一个库. 点击 repository 界面的 New 按钮,然后填入 Repository na

Git学习笔记(一) 安装及版本库介绍

安装Git 最早Git是在Linux上开发的,很长一段时间内,Git也只能在Linux和Unix系统上跑.不过,慢慢地有人把它移植到了Windows上.现在,Git可以在Linux.Unix.Mac和Windows这几大平台上正常运行了. 在Linux上安装Git 首先,你可以试着输入 git ,看看系统有没有安装Git: $ git The program 'git' is currently not installed. You can install it by typing: sudo

git diff命令详解

diff里面a表示前面那个变量,b表示第二个变量 HEAD     commit版本Index     staged版本 a.查看尚未暂存的文件更新了哪些部分,不加参数直接输入    git diff此命令比较的是工作目录(Working tree)和暂存区域快照(index)之间的差异也就是修改之后还没有暂存起来的变化内容. b.查看已经暂存起来的文件(staged)和上次提交时的快照之间(HEAD)的差异    git diff --cached    git diff --staged显示

Git和Github简单教程

网络上关于Git和GitHub的教程不少,但是这些教程有的命令太少不够用,有的命令太多,使得初期学习的时候需要额外花不少时间在一些当前用不到的命令上.这篇文章主要的目标是用较少的时间学习Git和GitHub的基本使用.在足够一般使用的前提下,尽量减少命令.如果需要其他命令,到时候再去其他地方了解就行了. 目录: 零.Git是什么 一.Git的主要功能:版本控制 二.概览 三.Git for Windows软件安装 四.本地Git的使用 五.Github与Git的关联 六.团队合作开发 七.Git

git diff ^M的消除

这是由于换行符在不同的操作系统上定义的区别造成的. Windows用CR LF来定义换行,Linux用LF. CR全称是Carriage Return ,或者表示为\r, 意思是回车. LF全称是Line Feed,它才是真正意义上的换行表示符. 如果用git diff的时候看到^M字符,就说明两个文件在换行符上有所差别. 下面简单的方法可以让git diff的时候忽略换行符的差异: git config --global core.whitespace cr-at-eol 更好的方法是每个项目

Git常用命令和场景(三)--版本差别查看

代码更新上线前,需要进行代码评审和走查,对于git,主要是查看现行版本和线上版本代码的差别,即使用git diff. 首先,还是查看程序版本,git log [plain] view plaincopy [[email protected] my]$ git log commit d87f3ea30f8e1a31ef26523c43d17237e4b7285c Merge: bf468f2 2e47641 Author: lixinglei <[email protected]> Date: