我想检查一个stash,并找出如果将其应用到当前状态的工作树中会对其进行哪些更改。
我知道可以在stash上执行git diff,但这将显示工作树和stash之间的所有差异,而我只想知道stash apply将要更改的内容。
git stash show
命令可以展示最近一个存储区里面被修改的文件。你可以添加 -p
参数来显示差异。
git stash show -p
如果你感兴趣的stash不是最近的一个,那么在命令的末尾添加stash的名称:
git stash show -p stash@{2}
git stash show -p stash@{0}
命令来查看特定的存储。数字0表示最近一次存储,1表示倒数第二次存储,以此类推。使用git stash list
命令可以显示所有可用的存储。 - brita_git stash show -p 'stash@{0}'
) - scott-pascoegit stash show -p stash@{0} > stash.txt
。 - S_Kgit stash show [-p] [stash索引号]
即可。 - needfulthing查看当前的stash列表:
git stash list
你将看到这样的列表:
stash@{0}: WIP on ...
stash@{1}: ...
stash@{2}: ...
...
要查看任何其中一个储藏的差异:
git stash show -p stash@{n}
我喜欢使用 gitk
的图形化界面来可视化 git 存储库。你可以使用以下命令查看最后一个被隐藏的项目:
gitk stash
你也可以使用查看你的所有存储变更(由git stash list
列出)。例如:
你可以查看任何一个已经存储的变更(如git stash list
所列举的)。例如:
gitk stash@{2}
在下面的截图中,您可以看到储藏在左上方作为提交,它来自哪里以及何时出现在提交历史中,在右下角列出了修改的文件列表,并在左下角逐行显示差异。这一切都发生在储藏仍被隐藏的情况下。stash@{X}
值以一次查看更多结果,但我还没有找到在gitk中简单地说“显示所有存储条目”的方法。 - Brent Bradburngitk \
git stash list --pretty=format:%gd`` 命令,然后搜索 "WIP on" 来跳转到下一个存储。 - Ikar Pohorský要查看未弹出的存储中的所有更改:
git stash show -p stash@{0}
要查看未弹出的存储中某个特定文件的更改:
git diff HEAD stash@{0} -- path/to/filename.php
-p
是 --patch
的缩写。该选项来自于 git-diff
。如果您更喜欢长格式,可以编写 git stash show --patch
。 - Peterinogit stash show
git show
git diff
git difftool
让我们看看如何使用上述提到的每个命令。
git stash show
简单的命令git stash show可以给出文件更改的简要总结,但不会显示与当前HEAD之间更改的差异。
命令git-show用于查看各种类型的对象。
命令git-show不仅用于可视化存储更改,还用于查看一个或多个对象,如blob、tree、tag和commit。
命令git-diff也是常用命令之一,用于显示提交之间、提交和工作树等之间的更改。
默认情况下,git diff将显示所选存储与(修改后的文件)仓库当前状态之间的差异,除非指定其他stash引用或commit。
要获取最顶部的 stash stash@{0}
和 master
分支之间的差异:
git diff stash@{0} master
仅显示文件名而不是更改的差异:
git diff --name-only stash@{0} master
git diff stash@{0}^1 stash@{0} -- <filename>
git difftool
命令git-difftool也可用于查找所选储藏和所选提交或分支或储藏之间的差异。
查看最新两个储藏之间的差异:
git difftool stash@{0} stash@{0}^1
git difftool --dir-diff stash@{0} stash@{0}^1
摘要:
从选定的存储中提取差异有用的命令: git stash show
,git show
,git diff
,git difftool
。
使用命令git stash show
查看差异。
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/
除了在 Is it possible to preview stash contents in git? 推荐的 gitk 之外,您还可以安装 tig 并调用 tig stash
。这个免费/开源的控制台程序也允许您选择要比较的存储。
P
和 !
键 弹出 和 删除 存储库。 - Ikar Pohorskýgitk
的人来说,相对容易地修改它以显示所有存储内容。具体方法可以参考此链接:https://askubuntu.com/questions/487453/which-git-gui-can-show-list-of-files-inside-stash#comment1326106_487463。 - 1737973是的,查看修改的最佳方法是将其保存在文件中,如下所示:
git stash show -p stash@{0} > stash.txt
除了现有的答案建议使用(显示第三个存储的差异)之外
git stash show -p stash@{2}
git-stash
文档中,写道:
可以通过仅指定储藏索引(例如整数
n
相当于stash@{n}
)来引用存储。
因此,也可以使用以下命令(等同于上面的命令)。
git stash show -p 2
git stash show -p <index number of stash stack>
查找索引号:
git stash list
示例:git stash show -p 1
git stash show -p stash@{1} >~/.diff && vim ~/.diff
(不必使用vim
,只要您的文本编辑器支持diff
输出的语法高亮显示即可)。 - Trevor Boyd Smith