查看 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. .net core 反编译一小段

    public static class A { private static readonly MethodInfo GetServiceInfo; public static IApplicatio ...

  2. More development resources

    社区 名称 官网 google https://www.google.com/ github https://github.com/ StackOverflow https://stackoverfl ...

  3. P1129 [ZJOI2007]矩阵游戏 二分图匹配

    思路:脑子+二分图匹配 提交:1次(课上讲过) 题解: 发现:如果符合题意,那么行和列一定是一一匹配的(必要条件),所以最大匹配必须是$n$. 同时我们发现,一定可以通过交换行列的方式,将(看起来)有 ...

  4. [bat]删除文件

    删除文件 del /f /s /q D:\HRG\NEW_Vn\CSV\*.meta 删除空文件夹 只能先删完文件夹中的文件,再删除空文件夹 rd /s /q D:\HRG\NEW_Vn\CSV\ 脚 ...

  5. TCP学习

    参考 https://coolshell.cn/articles/11564.html https://coolshell.cn/articles/11609.html

  6. 【Mybatis】向MySql数据库插入千万记录 单条插入方式,用时 1h16m30s

    本例代码下载:https://files.cnblogs.com/files/xiandedanteng/InsertMillionComparison20191012.rar 相对于批量插入,这种方 ...

  7. Android跨进程通信Content Provider

    Content Provider ContentProvider在android中的作用是对外共享数据,也就是说你可以通过ContentProvider把应用中的数据共享给其他应用访问,其他应用可以通 ...

  8. Java中AWT、Swing与SWT三大GUI技术的原理与效率差异

    Java中AWT.Swing与SWT三大GUI技术的原理与效率差异 转 https://blog.csdn.net/weixin_37703598/article/details/81843810   ...

  9. LinearLayout线性布局

    作用 : 线性布局会将容器中的组件一个一个排列起来, LinearLayout可以控制组件横向或者纵向排列, 通过android:orientation属性控制; 不换行属性 : 线性布局中的组件不会 ...

  10. 深度学习之加载VGG19模型获取特征图

    1.加载VGG19获取图片特征图 # coding = utf-8 import tensorflow as tf import numpy as np import matplotlib.pyplo ...