Git Stashes存储在哪里?

11dmarpk  于 2023-09-29  发布在  Git
关注(0)|答案(3)|浏览(197)

我一直在使用PhpStorm,最近隐藏了大量的更改。在那之后的某个时候,我的PC配置文件变得损坏,不得不重建。
现在我有一个新的PC配置文件,PhpStorm不显示我的隐藏更改。
有什么办法能让我把它们拿回来吗?

rqmkfv5c

rqmkfv5c1#

根据文档,最新的存储在./.git/refs/stash中,而旧的存储在refreflog中。
顺便说一句,我发现经常使用git stash是一种不好的做法。一般来说,在一个特性分支上更喜欢许多小的提交。这样你就很少需要藏起来,当你这样做的时候,它也很少被储存起来。我通常只在需要触摸东西几分钟的时候才把它藏起来,然后在我看完东西的时候再涂。
https://git-scm.com/docs/git-stash

atmip9wb

atmip9wb2#

由“git stash”(即工作树的当前版本和.git/index的内容)被存储为两个提交树。
一个提交树包含工作树当前状态的快照。这里有一些棘手的问题,见下文。
我被告知,另一个提交树用于存储.git/index在存储时的内容快照。我还没有足够深入地研究这一点,以了解一个是如何翻译成另一个。
.git/refs/stash包含stash创建的提交树的哈希值。
.git/logs/refs/stash包含一个类似于reflog的元数据块,它是关于.git/refs/stash之前的stash的。
.git/index保存工作树中每个文件的条目列表。这些条目包含完整的路径和文件名,以及关于文件的缓存元数据,包括文件系统元数据和git相关元数据。
git add“将文件的副本添加到对象存储中,并在.git/index中为该文件设置暂存标志。
要让“git stash“创建提交树,必须将已更改(编辑)但尚未使用“git add“暂存的文件添加到对象存储中。“git stash“通过构建一个临时索引文件来实现这一点。

mccptt67

mccptt673#

所有这些都存储在.git/refs/stash中。git stash无限期地保存stashes,所有这些都由git stash list列出。
请注意,删除或清除stash将从stash列表中删除它,但您可能仍然有未修剪的节点,其中包含正确的数据。

相关问题