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

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


当前回答

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

git stash show -p

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

git stash show -p stash@{2}

其他回答

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

$ 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(或——patch)标志

然而,值得一提的是,在显示Git存储时,可以将此设置为默认行为。Git stash显示stash@{0}),或者使用Git配置:

git config --global stash.showPatch true

...或者在你的.gitconfig文件中:

[stash]
  showPatch = true

这使得git stash show在默认情况下表现得像git show。如果和当你只是想看到diffstat(即。添加/删除的行摘要),你仍然可以通过——stat标志看到(再次,像git show一样):

git stash show --stat stash@{0}

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

git stash show -p

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

git stash show -p stash@{2}

显示所有存储

仅限文件名:

for i in $(git stash list --format="%gd") ; do echo "======$i======"; git stash show $i; done

所有存储中的完整文件内容:

for i in $(git stash list --format="%gd") ; do echo "======$i======"; git stash show -p $i; done

您将得到彩色的差异输出,您可以用空格(向前)和b(向后)来分页,并用q来关闭当前存储的分页器。如果你想把它放在一个文件中,然后追加>的存储。不同于命令。

git stash show -p <index number of stash stack>

查找索引号:

Git藏匿清单

示例:git stash show -p 1