比较 Git 文件差异
查看【Git】专题可浏览更多内容
比较修改
在 Git 中可以使用 git diff
命令比较修改,分析文件差异。
查看工作区与暂存区的修改对比
git diff
命令不带选项参数下是对比「工作树(working tree)」与「索引(index)」的差异。
但你可能需要了解 Git 的内部原理才能比较好的理解树的概念,所以我并不打算在这里详细的阐述这些东西,毕竟还没会用而上来就谈枯燥乏味的东西任谁也学不下去。
你只需要知道这里所说的「工作树(working tree)」就是你的「工作目录(Working Directory)」,而「索引(index)」就是「暂存区(Staging Area)」,也就是比较的是工作目录中当前文件和暂存区域快照之间的差异, 即修改之后还没有暂存起来的变化内容。
$ git diff
如果要查看某个指定文件的修改可以这样:
$ git diff -- <文件名>
# 例如查看 README.md 文件的修改:
$ git diff -- README.md
如果自上一次提交后工作目录中没有修改,暂存区也没有添加修改,那么此时在工作目录中的修改将会和历史版本进行对比。进一步,如果将修改添加到暂存区,此时使用 git diff
是没有内容的,因为不含选项默认是查看未暂存的修改。
查看暂存区与版本库的修改对比
如果要比对已暂存文件与最后一次提交的文件差异,可以使用 --cached
选项(与 --staged
选项一样的):
$ git diff --staged
# 或
$ git diff --cached
❓ 如果添加修改至暂存后,再次对工作目录中进行了修改。
那么使用git diff
(注意,不带选项)时,是与什么进行对比呢?
答案是暂存区。
查看工作区与版本库的修改对比
如果要查看当前工作目录与最后一次提交的修改对比,可以使用:
$ git diff HEAD
确切的说是 HEAD 的最后一次提交,HEAD 表示你当前所在的分支。
查看与指定历史版本的修改对比
如果要将工作区或暂存区与指定历史版本做对比,那么可以使用 git log
查看要指定的历史版本的「Commit ID」,然后:
# 比较工作区与指定 Commit ID 的差异,可以使用 git diff <commit id>
$ git diff de4d93a
# 比较暂存区与指定 Commit ID 的差异,可以使用 git diff --cached <commit id>
$ git diff --cached de4d93a
小结
- 使用
git diff
命令对比修改差异; - 使用
-- <文件名>
来指定查看某个文件的修改; - 使用
git diff
不带选项参数是查看工作区与暂存区的差异; - 使用
git diff --cached
查看暂存区与版本库的差异; - 使用
git diff HEAD
查看工作区与当前版本库所在分支的最近一次提交的差异; - 使用
git diff <commit id>
查看工作区与指定历史版本的差异,如果加上--cached
选项就是暂存区与指定历史版本的差异;