Git学习第七课 查看已暂存和未暂存的更新(git diff)

简介: 使用git status命令可以查看文件的状态。但是,显示出来的文件信息并不是特别详细。我们想要查看更加详细的文件状态信息,可以使用命令git diff。

使用git status命令可以查看文件的状态。但是,显示出来的文件信息并不是特别详细。我们想要查看更加详细的文件状态信息,可以使用命令git diff。
git diff命令可以帮助我们得知当前做的哪些更新还没有暂存?有哪些更新已经暂存起来准备好了下次提交? git diff 会使用文件补丁的格式显示具体添加和删除的行。
我们修改test.txt文件之后,保存。然后运行命令 git status.


img_fbf0546c02534b25f84d20d3661b995a.png
image.png

这里的test.txt没有被加入到跟踪区域,显示为红色已经修改的状态。系统提示我们要先添加到暂存区才能提交。
接下来,我们运行git diff 命令。


img_e83ad71e6d9106e4d2586b0b21ec2933.png
image.png

此时,我们发现,diff命令给我们列出了我们这一次修改的文件名,文件内容。

注意,注意,注意

git diff
此命令比较的是工作目录中 当前文件 和 暂存区域快照 之间的差异,也就是修改之后还没有暂存起来的变化内容。

若要看已经暂存起来的文件和上次提交时的快照之间的差异,可以用 git diff --cached 命令。(Git 1.6.1 及更高版本还允许使用 git diff --staged,效果是相同的,但更好记些。)来看看实际的效果。

我们先不暂存该文件,执行命令看看。


img_080e694705ca31b26be44991ea30113f.png
image.png

发现没有任何输出。因为现在没有任何暂存文件。
我们执行命令add,把test.txt添加到暂存区域。


img_679b5835df4260355945bc683ca855ac.png
image.png

然后再次执行git diff --cached命令,输出结果如下:


img_9aa0ec00e3dbf032e8425efa8559f05d.png
image.png

现在 test.txt已经添加到了暂存区,该命令比较的是暂存区和上一次提交快照之间的差异。上一次提交的快照中并没有添加
2017-11-10 添加
这句话。

git diff --cached 列出了暂存区的文件和上一次提交的文件之间的变化。

我们再次编辑test.txt文件,再添加一行:
123456
使用命令 git status看看结果:


img_678d15e17d8a44e1ce1812450e03e788.png
image.png

我们看到了暂存前后的两个版本。
运行命令git diff --cached,输出结果:


img_12937b2b86bc0bc943dfd7e1b91e14a0.png
image.png

并没有发现新添加的一行
123456
这是为什么呢?
前面已经讲过了,git diff --cached 是比较已经暂存区域和上一次提交的文件变化。这一次的改变并没有被添加到跟踪,所以看不到新的文件内容。
我们再次执行命令add


img_c31ff0cc14c833b5f9c17a6623582c08.png
image.png

重新执行 git diff --cached 命令:


img_bcb6f6e5f9081c367b26808e2d355b3c.png
image.png

现在就可以看到了本次修改的内容了。

总结:
1、每修改一次文件,要想比较暂存区和上次提交的变化,都要执行 add命令。
2、git status 命令是查看文件的状态。已暂存的文件和未暂存文件都能看到状态。但是不能看到修改的内容。
3、git diff命令可以看到文件的修改的内容。比较的是未暂存的文件的修改前后的变化。
4、git diff --cached 也可以看到文件修改的内容变化,比较的是已经暂存的文件和上次提交的变化。

大家明白了吗?
祝开心。

目录
相关文章
|
9月前
|
Linux 开发工具 C语言
Linux的学习之路:7、yum与git
Linux的学习之路:7、yum与git
80 0
|
3月前
|
开发工具 git
学习Git的最佳实践有哪些?
遵循这些最佳实践,能让你更高效地使用 Git,更好地管理项目的版本和协作。
|
3月前
|
存储 开发工具 git
Git 学习----基本概念
理解这些基本概念是掌握 Git 操作的重要基础,它们为有效地管理项目的版本和开发过程提供了支持。通过不断实践和使用 Git,开发者可以更加高效地协作和管理项目的演变
|
8月前
|
存储 网络安全 开发工具
【GIT】Git常用命令学习
【GIT】Git常用命令学习
84 1
|
4月前
|
开发工具 git
git学习四:常用命令总结,包括创建基本命令,分支操作,合并命令,压缩命令,回溯历史命令,拉取命令
这篇文章是关于Git常用命令的总结,包括初始化配置、基本提交、分支操作、合并、压缩历史、推送和拉取远程仓库等操作的详细说明。
173 1
git学习四:常用命令总结,包括创建基本命令,分支操作,合并命令,压缩命令,回溯历史命令,拉取命令
|
4月前
|
Shell 开发工具 git
git学习三:git使用:删除仓库,删除仓库内文件
通过GitHub的设置页面删除仓库,以及如何使用Git命令行删除仓库中的文件或文件夹。
231 1
git学习三:git使用:删除仓库,删除仓库内文件
|
4月前
|
存储 开发工具 数据安全/隐私保护
全面掌握 Git 基本操作与暂存技巧
本文详细介绍了 Git 的基本操作流程,包括查看文件状态、代码拉取、文件添加与提交、以及推送到服务器的步骤。同时,探讨了 Git 暂存的相关命令,如暂存、恢复和删除等,帮助开发者有效管理代码更改与版本控制。此外,还提供了如何找回暂存代码的技巧,以确保数据安全。
66 2
|
4月前
|
Unix Shell 网络安全
git学习六:(bug总结)git@github.com: Permission denied (publickey).等
本文是关于解决在使用Git和GitHub时遇到的“git@github.com: Permission denied (publickey)”错误的指南。文章提供了详细的步骤,包括确认SSH Agent运行状态、检查密钥配置、确保密钥匹配、验证仓库URL、检查权限和代理设置,以及配置SSH文件。这些步骤帮助用户诊断并解决SSH认证问题。
502 0
|
4月前
|
编译器 网络安全 开发工具
git学习五:切换本地仓库出现的问题。修改git配置初始化。error:src refspec master does not match any。错误总结,送上几个案例
这篇文章是关于Git使用中遇到的一些问题及其解决方案的总结,包括切换本地仓库时的问题、修改Git初始化配置、以及解决"error: src refspec master does not match any"错误等。
134 0
|
8月前
|
存储 开发工具 git
蓝易云 - git中,add到暂存区,commit且push之后,暂存区域里还有内容吗
所以,当你执行 `git add`,然后是 `git commit`,最后是 `git push`之后,暂存区是空的,除非你又执行了新的 `git add`命令来添加更多的更改。
69 1