如何查看工作目录和暂存索引之间的差异?
How to see diff between working directory and staging index?
我们可以看到 存储库和工作目录 之间的区别:
git diff
我们可以看到 存储库和暂存索引 之间的区别:
git diff --staged
但是我们如何看待工作目录和暂存索引之间的区别?
实际上,git diff
在索引和工作树之间。碰巧的是,直到您对索引进行阶段性更改(使用 git add
),其内容将与 HEAD
提交相同。
git diff HEAD
在 repo 和工作树之间。
- git diff - 将工作区域与索引进行比较。
- git diff --staged - 将阶段区域与存储库进行比较。
- git diff HEAD - 将工作区域与存储库进行比较
为了说明这一点,我更改了一个带有“Name Staged”文本的文件,然后添加了它(git 添加。)。在那之后,我再次更改了文件,现在我将文本替换为“Name Working Area”,然后 运行 以下命令:
现在你可以清楚地看到它是如何工作的了。很酷吧?
受@VonC 接受的答案的启发,除了git diff HEAD
你还可以写:
git difftool --dir-diff --no-prompt HEAD
这将打开一个目录 diff,显示您的工作树和 repo 之间的差异。从那里可以很容易地查看对单个文件的更改(例如,当使用 Beyond Compare 之类的工具及其选项卡 UI)时。
我们可以看到 存储库和工作目录 之间的区别:
git diff
我们可以看到 存储库和暂存索引 之间的区别:
git diff --staged
但是我们如何看待工作目录和暂存索引之间的区别?
实际上,git diff
在索引和工作树之间。碰巧的是,直到您对索引进行阶段性更改(使用 git add
),其内容将与 HEAD
提交相同。
git diff HEAD
在 repo 和工作树之间。
- git diff - 将工作区域与索引进行比较。
- git diff --staged - 将阶段区域与存储库进行比较。
- git diff HEAD - 将工作区域与存储库进行比较
为了说明这一点,我更改了一个带有“Name Staged”文本的文件,然后添加了它(git 添加。)。在那之后,我再次更改了文件,现在我将文本替换为“Name Working Area”,然后 运行 以下命令:
现在你可以清楚地看到它是如何工作的了。很酷吧?
受@VonC 接受的答案的启发,除了git diff HEAD
你还可以写:
git difftool --dir-diff --no-prompt HEAD
这将打开一个目录 diff,显示您的工作树和 repo 之间的差异。从那里可以很容易地查看对单个文件的更改(例如,当使用 Beyond Compare 之类的工具及其选项卡 UI)时。