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

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


当前回答

我喜欢gitk可以准确地显示哪些是未跟踪的或位于索引中的,但默认情况下,它将在当前分支上的所有其他提交中间显示那些隐藏的“提交”。

诀窍是像下面这样运行gitk:

gitk "stash@{0}^!"

(引用是为了使它在Powershell中工作,但这样它仍然可以在其他shell中工作。)

如果你在gitrevisions帮助页面中查找这个语法,你会发现以下内容:

r1 ^ !符号包括commit r1,但不包括它的所有父类。就其本身而言,这个符号表示单个提交r1。

这显然会将gitk置于这样一种模式,即只显示所选提交的直接父节点,这正是我所喜欢的。


如果你想进一步列出所有的存储,那么你可以运行这个:

gitk `git stash list '--pretty=format:%gd^!'`

(反撇号内的单引号是为了安抚Bash,否则它会抱怨感叹号)

如果您在Windows上并使用cmd或Powershell:

gitk "--argscmd=git stash list --pretty=format:%gd^!"

其他回答

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

查找索引号:

Git藏匿清单

示例:git stash show -p 1

查看已存储更改的列表

git stash list

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

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

用于查看stash中的特定文件

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

下面的命令可以用来提取与任何其他存储、提交、分支或HEAD的存储变更的差异。

git stash show
git show
git diff
git difftool

让我们来看看如何使用上面提到的每一个命令。

Git藏匿秀

简单的命令git stash show给出了非常简短的更改摘要 的文件,但不会显示变化的差异与当前的头。

吉特秀

git-show命令用于查看各种类型的对象。 git-show命令不仅用于可视化存储更改,而且 也用于查看一个或多个对象,如斑点,树,标签和 提交。

git diff

git-diff命令也是常用的命令之一 显示提交、提交和工作树等之间的更改。 默认情况下,git diff将显示所选stash的diff 对(修改的文件)存储库的当前状态,除非有其他存储 指定引用或提交。

获取top most stash@{0}和master branch之间的差异:

git diff stash@{0} master

只显示文件的名称,而不是变化的差异:

git diff --name-only stash@{0} master

查看选定文件的选定存储之间的差异:

git diff stash@{0}^1 stash@{0} -- <filename>

git difftool

git-difftool命令也可以用来查找差异between 选定的存储和选定的提交或分支或存储

查看最近两次存储之间的差异:

git difftool stash@{0} stash@{0}^1

git difftool --dir-diff stash@{0} stash@{0}^1

简介:

从选定的stash中提取差异的有用命令:git stash show, git show, git diff, git difftool。

看到差异使用命令git stash显示,

git stash show -p stash@{0}

使用命令git show查看隐藏的变化,

git show stash@{1}

使用命令git diff查看最新存储和选择提交之间的区别,

git diff stash@{0} <commit-hash>

引用:

https://howto.lintel.in/how-to-see-stashed-changes-using-git-stash/

https://git-scm.com/docs/git-show

https://git-scm.com/docs/git-stash

显示所有存储

仅限文件名:

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 list

你会看到这样一个列表:

stash@{0}: WIP on ...
stash@{1}: ...
stash@{2}: ...
...

查看差异对任何这些存储:

git stash show -p stash@{n}