查看 Git 区域文件的具体改动 git diff

  git status 只能让我们知道文件在 Git 区域内的改动状态,但如果我们想查看某个文件内具体改了什么(也可以理解为在不同 Git 区域中的差异),此时需要用 git diff 命令。

  对于 b 文件,由于是新增的文件,其只存在于工作区,且处于 Untracked 状态,Git 认为无论是哪两个 Git 区域之间的比对都没有意义,得到的结果是没有区别。

  而对于 a文件,由于已经被提交到仓库了,处于 Git 管理中,所以这个文件同时存在于三个 Git 空间(工作区,暂存区,仓库),我们在工作区内对其进行了文件改动,无论是比对工作区 vs 暂存区或者工作区 vs 仓库,得到的结果应该都是 a 文件里的具体变化内容。而如果比对暂存区 vs 仓库,得到的结果也应该是没有区别。

git diff 用在查看文件内容变化

查看文件当前变动(工作区 vs 暂存区)git diff

工作区做了改动

// 改动 a.txt 文件后可看到文件的具体变化
[root@ci-node1 git_test]# echo "test">>a

看看git stauts,文件被修改了,这个文件被git仓库管理

[root@ci-node1 git_test]# git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory) modified: a no changes added to commit (use "git add" and/or "git commit -a")

看看文件里面改了什么 git status无法看到,使用git diff

对比工作区和暂存区

[root@ci-node1 git_test]# git diff a
diff --git a/a b/a
index e69de29..9daeafb
--- a/a
+++ b/a
@@ -, + @@
+test

暂存区和工作区的a做了哪些改动,加了test

//将 a 文件的变动暂存后,查看变化
[root@ci-node1 git_test]# git add a [root@ci-node1 git_test]# git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage) modified: a //对比工作区与暂存区,无变化,git diff 没有输出
[root@ci-node1 git_test]# git diff a // git add 后工作区和暂存区内容一致了,对比,

查看文件当前变动(工作区 vs 暂存区)git diff –cached

这时候对比暂存区与本地仓库,可以看到具体变化

//对比暂存区与本地仓库,可以看到具体变化
[root@ci-node1 git_test]# git diff --cached a
diff --git a/a b/a
index e69de29..9daeafb
--- a/a
+++ b/a
@@ -, + @@
+test

这时候执行git commit

[root@ci-node1 git_test]# git commit -m "modify a"
[master af5856a] modify a
file changed, insertion(+)
// 这时候再执行git diff --cached ,没有输出
[root@ci-node1 git_test]# git diff --cached a

暂存区和本地仓库一样了

再做个验证

// 工作区是干净的,三个区域 工作区、暂存区、本地仓库内容是一致的
[root@ci-node1 git_test]# git status
On branch master
nothing to commit, working tree clean
改动 a 文件后,工作区改动了,再看变化
//改动 a 文件后,工作区改动了,再看变化
[root@ci-node1 git_test]# echo "bbb">a

现在工作区和暂存区不一致的,但暂存区和本地仓库是一致的

// 现在工作区和暂存区不一致的,但暂存区和本地仓库是一致的
[root@ci-node1 git_test]# git diff a
diff --git a/a b/a
index 9daeafb..f761ec1
--- a/a
+++ b/a
@@ - + @@
-test
+bbb
没有输出,因为暂存区和本地仓库是一致的 
// 没有输出,因为暂存区和本地仓库是一致的
[root@ci-node1 git_test]# git diff --cached a

总结:

git diff 比较的是 工作区和暂存区

git diff --cached 比较的是 暂存区和本地仓库

git 命令 git diff 查看 Git 区域文件的具体改动的更多相关文章

  1. 1git命令的使用,查看git仓库状态,添加文件到git跟踪,git提交,查看git分支,查看git仓库日志信息,切换git分支,解决git分支合并后出现冲突的问题

    1新建一个存储git的文件夹,命令是: toto@toto-K45VD:~$ mkdir gitfolder 2初始化一个git仓库,命令是: toto@toto-K45VD:~$cd gitfold ...

  2. Git命令——提交、查看、后退、前进

    Git常用命令 1. 命令git init把这个目录变成Git可以管理的仓库: 2. 命令git commit把文件提交到仓库 这里需要注意的是,Git只能跟踪文本文件的改动,如txt文件,网页,所有 ...

  3. git 命令行(三)-删除文件

    在Git中,删除也是一个修改操作,我们实战一下,有一个多余的文件:src/common/Util2.js 我们需要删除这个文件, 一般情况下,你通常直接在文件管理器中把没用的文件删了,或者用 rm命令 ...

  4. android Git命令家底儿及Git数据通信原理详解

    声明:本文为CSDN原创投稿文章,未经许可,禁止任何形式的转载. 现在大部分使用的都是SVN,也有一部分迁移了Git,虽然挺好的,不过还有其它很多版本控制的工具,并没有谁最好用,最重要的是适合自己的公 ...

  5. Git命令之回退篇 git revert git reset

    Git command之回退篇 欲练回退 必先了解:HEAD.index.WorkingCopy HEAD: 当前所在的分支版本顶端的别名,也就是最新的一次commit. git commit 之后与 ...

  6. 记录自己使用到的git命令行代码与git使用流程

    1.安装创建版本库 新建一个文件夹,用命令行实现: $ cd /d             //进入d盘 $ mkdir gitproject      //新建gitproject文件夹 $ cd ...

  7. git 命令提交项目到git服务器

    1.先下载git,然后安装git https://git-scm.com/downloads 2.在电脑任意盘创建一个目录 3.在创建的目录下点击右键 4.初始化git 使用git init 初始化, ...

  8. Git命令之diff

    工作区(working tree),暂存区(index /stage),本地仓库(repository) git跟不同的参数,比较不同的区间的版本. git diff:是查看working tree与 ...

  9. Git命令家底儿及Git数据通信原理详解

    http://geek.csdn.net/news/detail/72807?utm_source=tuicool&utm_medium=referral

随机推荐

  1. Java Spring MVC工作流程

    本文是对 SpringMVC 工作流程的总结,自己一定要可以用语言描述. 名词解释: DispatcherServlet:前端控制器,是 SpringMVC 工作流程的中心,负责调用其他组件,在系统启 ...

  2. MSMQ介绍

    最近的项目中用到了MSMQ,简单的使用到了它,现总结下.有些是网上的资料有些是自己的笔记. MSMQ理解 Message Queue(微软消息队列)是在多个不同的应用之间实现相互通信的一种异步传输模式 ...

  3. python国内镜像源

    让python pip使用国内镜像 国内源: 清华:https://pypi.tuna.tsinghua.edu.cn/simple 阿里云:http://mirrors.aliyun.com/pyp ...

  4. Android webView加载图片显示过大的问题

    webview的基本使用流程这里我就不重复说明了,本篇针对的是文章详情加载完成后出现的情况,这里我们使用的方法是:通过js脚本,重置img标签中图片的宽度和高度. 使用步骤: 1.此方法需要使用js, ...

  5. 【零基础】搞懂GPU为什么比CPU“快”

    一.前言 近几年深度学习在各领域大显神威,而”GPU加速"也得到了越来越多的篇幅,似乎任何程序只要放到GPU上运行那速度就是杠杠的.GPU代替CPU计算已成了大势所趋?我先告诉你结论”那是不 ...

  6. 【转载】详解CI、CD相关概念

    在软件的编译发布的过程中,经常能够看到CI.CD这样的词语.其实他们是专业的缩写短语,这里介绍下他们的概念和区别. 敏捷软件开发 敏捷软件开发,英文全称:Agile software developm ...

  7. LC 813. Largest Sum of Averages

    We partition a row of numbers A into at most K adjacent (non-empty) groups, then our score is the su ...

  8. Android 中更新 UI 的四种方式

    runOnUiThread handler 的 post handler 的 sendMessage View 自身的 post

  9. VBA锁定指定单元格

    Then .Range("AF4").Value = pjno .Range("A1:AH56").Locked = False .Range("F6 ...

  10. php----处理从mysql查询返回的数据

    使用php的mysql,向mysql查询,返回的是一个资源,有4个函数可以进行处理. 1.mysql_fetch_row() 2.mysql_fetch_assoc() 3.mysql_fetch_a ...