我想检查一个隐藏,并找出它会做出什么改变,如果我将它应用到工作树在其当前状态。
我知道我可以在stash上做一个git差异,但这向我展示了工作树和stash之间的所有差异,而我只是想知道stash应用将会改变什么。
我想检查一个隐藏,并找出它会做出什么改变,如果我将它应用到工作树在其当前状态。
我知道我可以在stash上做一个git差异,但这向我展示了工作树和stash之间的所有差异,而我只是想知道stash应用将会改变什么。
当前回答
git stash show -p <index number of stash stack>
查找索引号:
Git藏匿清单
示例:git stash show -p 1
其他回答
显示所有存储
仅限文件名:
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来关闭当前存储的分页器。如果你想把它放在一个文件中,然后追加>的存储。不同于命令。
我喜欢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 stash@{2}
注意,在git-stash文档中,它是这样写的
存储也可以通过指定存储索引来引用(例如,整数n等价于stash@{n})。
因此,也可以使用(这相当于上面的命令)
git stash show -p 2
这也可以避免一些Powershell问题。
是的,查看修改内容的最好方法是保存在这样的文件中:
git stash show -p stash@{0} > stash.txt
一些回答提到了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}