当我运行git diff时,Git实际上在做什么

时间:2013-05-22 13:26:14

标签: git git-diff

作为Git的新手,有人可以用相对简单的术语解释git diff实际上做了什么,而不进行分支/合并等吗?

根据我的经验,我知道运行它的结果: 我的工作目录中与我的仓库中的文件不同的任何文件都将由git diff返回,因为它们尚未放入暂存索引中。

如果我的所有更改都已放入暂存索引中,git diff将不返回任何内容。要查看我的更改,我必须使用git diff --staged

有一个简单的方法来解决这个问题吗?我不能完全了解关于分段索引的警告。

3 个答案:

答案 0 :(得分:3)

你是对的,git diff显示未分期的更改。

从技术上讲,它是工作树和索引树之间的区别(当没有任何阶段时,它与HEAD的树相同,即最后一次提交)。

git-speak中的'tree'是目录中文件的快照。

答案 1 :(得分:0)

我的建议是阅读本书(免费提供):http://git-scm.com/book

答案 2 :(得分:0)

您可以阅读manual。 “说明”部分解释了git diffgit diff --cachedgit diff commit1 commit2等所有变体......

我建议使用git status清楚地了解文件的状态。

然后,您可以使用git diff HEAD -- <path/to/file>查看当前状态的文件与上次提交的版本之间的差异。