天天看点

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

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

git diff命令可以帮助我们得知当前做的哪些更新还没有暂存?有哪些更新已经暂存起来准备好了下次提交? git diff 会使用文件补丁的格式显示具体添加和删除的行。

我们修改test.txt文件之后,保存。然后运行命令 git status.

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

image.png

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

接下来,我们运行git diff 命令。

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

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

注意,注意,注意

git diff

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

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

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

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

发现没有任何输出。因为现在没有任何暂存文件。

我们执行命令add,把test.txt添加到暂存区域。

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

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

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

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

2017-11-10 添加

这句话。

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

我们再次编辑test.txt文件,再添加一行:

123456

使用命令 git status看看结果:

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

我们看到了暂存前后的两个版本。

运行命令git diff --cached,输出结果:

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

并没有发现新添加的一行

这是为什么呢?

前面已经讲过了,git diff --cached 是比较已经暂存区域和上一次提交的文件变化。这一次的改变并没有被添加到跟踪,所以看不到新的文件内容。

我们再次执行命令add

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

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

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

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

总结:

1、每修改一次文件,要想比较暂存区和上次提交的变化,都要执行 add命令。

2、git status 命令是查看文件的状态。已暂存的文件和未暂存文件都能看到状态。但是不能看到修改的内容。

3、git diff命令可以看到文件的修改的内容。比较的是未暂存的文件的修改前后的变化。

4、git diff --cached 也可以看到文件修改的内容变化,比较的是已经暂存的文件和上次提交的变化。

大家明白了吗?

祝开心。