可以用 git log 查看提交日志(附加的 --stat 参数可以看到每次提交的文件变更统计)。
$ cd /path/to/my/workspace/demo
$ git log --stat
如果想更简洁和清晰地看到提交的历史,可以使用精简输出来显示日志。
$ git log --pretty=oneline
当执行 git status 命令(或者 git diff 命令)扫描工作区改动的时候,先依据 .git/index 文件中记录的(用于跟踪工作区文件的)时间戳、长度等信息判断工作区文件是否改变,如果工作区文件的时间戳改变了,说明文件的内容可能被改变了,需要打开文件,读取文件内容,与更改前的原始文件相比较,判断文件内容是否被更改。如果文件内容没有改变,则将该文件新的时间戳记录到 .git/index文件中。因为如果要判断文件是否更改,使用时间戳、文件长度等信息进行比较要比通过文件内容比较要快得多,所以 Git 这样的实现方式可以让工作区状态扫描更快速地执行,这也是 Git 高效的原因之一。
通过使用不同的参数调用 git diff 命令,可以对工作区、暂存区和 HEAD 中的内容进行两两比较。
(1)工作区和暂存区的比较。
$ git diff
(2)暂存区和 HEAD 比较。
$ git diff --cached
(3)工作区和 HEAD 比较。
$ git diff HEAD
不要使用 git commit -a
实际上,Git 的提交命令(git commit)可以带上 -a 参数,对本地所有变更的文件执行提交操作,包括对本地修改的文件和删除的文件,但不包括未被版本库跟踪的文件。
这个命令的确可以简化一些操作,减少用 git add 命令标识变更文件的步骤,但是如果习惯了使用这个 “偷懒” 的提交命令,就会丢掉 Git 暂存区带给用户的最大好处:对提交内容进行控制的能力。
命令 git stash 用于保存当前工作进度,在研究了 HEAD 和 master 分支的机制之后,再继续对暂存区探索。
$ git stash
运行完 git stash 之后,再查看工作区状态,会看见工作区尚未提交的改动(包括暂存区的改动)全都不见了。