如何查看已暂存的更改

如何查看已暂存的更改

技术背景

在使用Git进行版本控制时,我们经常需要对文件进行修改、暂存和提交操作。暂存区(Staging Area)是一个中间区域,我们可以将工作目录中的部分或全部更改添加到暂存区,准备进行提交。有时候,我们需要查看暂存区中的更改,以便确认要提交的内容。

实现步骤

查看暂存区与当前HEAD的差异

可以使用git diff --cachedgit diff --staged命令来查看暂存区中的更改与当前HEAD(即当前分支的最后一次提交)之间的差异。--staged--cached的同义词。

1
git diff --cached

查看工作目录与暂存区的差异

使用git diff命令可以查看工作目录中未暂存的更改。

1
git diff

查看工作目录与HEAD的差异

使用git diff HEAD命令可以查看工作目录中所有的更改,包括已暂存和未暂存的更改。

1
git diff HEAD

仅查看暂存文件的名称

使用git diff --cached --name-only命令可以仅获取暂存文件的名称。

1
git diff --cached --name-only

查看特定暂存文件的差异

使用git diff --staged -- <path>命令可以查看特定暂存文件的差异。

1
git diff --staged -- app/models/user.rb

使用git status -v查看暂存更改

git status -v也可以显示暂存的更改,但前提是已经使用git add暂存了一些更改。

1
git status -v

使用可视化工具查看暂存更改

使用git difftool --staged

git difftool --staged命令可以启动默认的可视化差异工具来查看暂存文件的差异。

1
git difftool --staged

可以添加-y选项,这样就不会每次都询问是否为每个文件启动可视化工具。

1
git difftool -y --staged

还可以指定特定的文件:

1
git difftool -y --staged <<relative path/filename>>

配置不同的可视化差异工具

可以使用-t <tool>选项指定使用的可视化工具。也可以通过修改.gitconfig文件来配置默认的可视化差异工具。
以下是将VS Code配置为差异和合并工具的示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[diff]
tool = vscode
guitool = vscode
[merge]
tool = vscode
guitool = vscode
[mergetool]
prompt = true
[difftool "vscode"]
cmd = code --wait --diff \"$LOCAL\" \"$REMOTE\"
path = c:/apps/vscode/code.exe
[mergetool "vscode"]
cmd = code --wait \"$MERGED\"
path = c:/apps/vscode/code.exe

使用图形化工具

git guigit-cola是图形化工具,可以让你查看和操作暂存区。它们都包含了简单的可视化差异工具,用于查看暂存文件的差异。

核心代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 查看暂存区与当前HEAD的差异
git diff --cached
git diff --staged

# 查看工作目录与暂存区的差异
git diff

# 查看工作目录与HEAD的差异
git diff HEAD

# 仅查看暂存文件的名称
git diff --cached --name-only

# 查看特定暂存文件的差异
git diff --staged -- app/models/user.rb

# 使用git status -v查看暂存更改
git status -v

# 使用可视化工具查看暂存更改
git difftool --staged
git difftool -y --staged
git difftool -y --staged <<relative path/filename>>

最佳实践

  • 在提交代码之前,使用git diff --cachedgit diff --staged查看暂存区的更改,确保提交的内容符合预期。
  • 如果更喜欢可视化的方式查看差异,可以配置并使用git difftool命令。
  • 对于多个暂存文件的情况,可以使用git add -i然后选择6: diff来选择要查看的文件。

常见问题

--cached命令不工作

如果--cached命令不工作,可以尝试使用git diff origin/<branch>..<branch>命令。

可视化工具配置问题

在配置可视化工具时,需要确保.gitconfig文件中的路径和命令正确。如果遇到问题,可以参考git difftool --help文档进行配置。


如何查看已暂存的更改
https://119291.xyz/posts/2025-05-13.how-to-show-staged-changes/
作者
ww
发布于
2025年5月13日
许可协议