On the git 存储您可以在联机帮助页中阅读(在“讨论”部分中,“选项”描述之后):
存储表示为提交,其树记录了提交的状态
工作目录,其第一个父目录是 HEAD 处的提交
存储已创建。
所以你可以处理藏匿的东西(例如stash@{0}
是第一个/最上面的存储)作为合并提交,并使用:
$ git diff stash@{0}^1 stash@{0} -- <filename>
解释:stash@{0}^1
表示给定存储的第一个父级,如上面的解释所述,它是存储更改的提交。我们使用这种形式的“git diff”(有两次提交),因为stash@{0}
/ refs/stash
是一个合并提交,我们必须告诉 git 我们想要与哪个父级进行比较。更神秘的是:
$ git diff stash@{0}^! -- <filename>
也应该有效(参见git rev 解析联机帮助页的解释rev^!
语法,在“指定范围”部分)。
同样,您可以使用git 结账从存储中检查单个文件:
$ git checkout stash@{0} -- <filename>
或将其保存在另一个文件名下:
$ git show stash@{0}:<full filename> > <newfile>
or
$ git show stash@{0}:./<relative filename> > <newfile>
(note这里 是相对于项目顶级目录的文件的完整路径名(认为:相对于stash@{0}
)).
你可能需要保护stash@{0}
来自 shell 扩展,即使用"stash@{0}"
or 'stash@{0}'
.