我想检查一个隐藏,并找出它会做出什么改变,如果我将它应用到工作树在其当前状态。

我知道我可以在stash上做一个git差异,但这向我展示了工作树和stash之间的所有差异,而我只是想知道stash应用将会改变什么。


当前回答

您可以通过以下命令查看所有的存储列表:

$ git stash list

stash@{0}: WIP on dev: ddd4d75 spelling fix

stash@{1}: WIP on dev: 40e65a8 setting width for messages

......

......

......


stash@{12}: WIP on dev: 264fdab added token based auth

最新藏的是第一个。

您可以简单地选择上述列表中提供的stash的索引n,并使用以下命令查看已存储的详细信息

git stash show -p stash@{3}

同样的,

git stash show -p stash@{n}

也可以使用以下命令检查diff:

git diff HEAD stash@{n} -- /path/to/file

其他回答

Git存储显示将显示您最近存储中更改的文件。您可以添加-p选项来显示差异。

git stash show -p

如果你感兴趣的存储不是最近的,那么在命令的末尾添加存储的名称:

git stash show -p stash@{2}

查看所有的变化在一个未弹出的stash:

git stash show -p stash@{0}

要查看一个未弹出的存储中的特定文件的更改:

git diff HEAD stash@{0} -- path/to/filename.php

查看已存储更改的列表

git stash list

用于查看特定存储中更改的文件列表

git stash show -p stash@{0} --name-only

用于查看stash中的特定文件

git show stash@{0} path/to/file

当这个问题第一次被问到的时候,这可能不是一个选项,但是,如果你使用PyCharm,你可以使用UnStash Changes工具(VCS->Git->UnStash Changes…)这允许你查看隐藏的更改列表,以及弹出,删除,清除或应用(如果需要,到一个新的分支):

并查看每个stash更改的文件:

以及每个文件的差异。在diff中,你可以从隐藏的变更中挑选单独的变更应用到工作分支中(使用左尖雪佛龙):

你可以用gitlen扩展查看VSCode中隐藏的更改

gitlen存储的截图