You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

仅暂存单个文件后,git stash show为何显示其他暂存区文件?

Git stash指定单个文件却显示多个暂存文件的原因

问题场景

执行git stash push指定仅暂存单个文件,但git stash show却显示包含已暂存区的其他文件,具体操作及输出如下:

$ git status
On branch some/0.0.1
Your branch is up to date with 'origin/some/0.0.1'.

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
    modified:   src/main/java/ServiceServiceImpl.java
    modified:   src/main/java/util/ServiceUtil.java
    modified:   src/test/SystemTest.java

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
    modified:   src/main/java/util/ServiceUtil.java
    modified:   src/main/resources/application-local.yml
    modified:   src/main/resources/application.yml
    modified:   src/main/resources/logback.xml

执行单个文件暂存命令:

$ git stash push src/main/resources/application.yml -m "app.xml stashed" # 仅暂存单个文件
Saved working directory and index state On 0.0.1: app.xml stashed

查看暂存列表:

$ git stash list
stash@{0}: On 0.0.1: app.xml stashed

查看暂存内容时,却显示了多个文件:

$ git stash show stash@{0} # 为何除了指定的application.yml,还显示了其他已暂存文件?
 .../java/ServiceServiceImpl.java   |  8 ++++----
 .../java/util/ServiceUtil.java    |  1 +
 src/main/resources/application.yml            | 20 ++++++++++++++------
 .../test/SystemTest.java |  6 +++---
 4 files changed, 22 insertions(+), 13 deletions(-)

根据Git手册对git stash show的说明:

show [-u|--include-untracked|--only-untracked] [] []
显示暂存条目记录的变更,即暂存内容与创建暂存时的提交之间的差异。

原因解释

这是因为**git stash push默认会同时保存当前的暂存区状态**,哪怕你指定了单个文件。

当你执行git stash push <file>时,Git会执行以下操作:

  • 保存你指定的工作区文件的变更
  • 同时保存当前整个暂存区的所有变更(也就是git status里"Changes to be committed"部分的内容)

所以git stash show展示的差异,是暂存的工作区文件 + 暂存区的所有变更与当前分支HEAD提交的对比结果,自然会包含那些原本已暂存的文件。

如果只想暂存指定的工作区文件,且不包含已暂存区的内容,需要加上--keep-index参数:

git stash push --keep-index src/main/resources/application.yml -m "app.yml stashed"

这个参数会让Git保留当前暂存区的状态,只把指定的工作区文件变更存入stash,此时git stash show就只会显示你指定的文件了。

内容的提问来源于stack exchange,提问作者Khanna111

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 01:15:40