我一直在使用 PhpStorm,最近隐藏了我的大量更改。此后的某个时候,我的电脑配置文件被损坏,必须重建。
现在我有了新的 PC 配置文件,PhpStorm 没有显示我隐藏的更改。
有什么办法可以把它们找回来吗?
从文档来看,最新的存储在
./.git/refs/stash
中,而较旧的存储在该 reflog
的 ref
中。
顺便说一句,我发现定期使用 git stash 是一种不好的做法。一般来说,更喜欢在功能分支上进行许多小提交。这样你就很少需要隐藏,而且当你这样做时,它也很少被存储。我通常只在需要触摸某样东西几分钟时才藏起来,然后在我看完某样东西后涂抹。
“
git stash
”存储的实际数据(即工作树的当前版本和.git/index
的内容)存储为两个提交树。
一个提交树包含工作树当前状态的快照。这里有一些棘手的地方,请参见下文。
据我所知,另一个提交树用于存储存储时
.git/index
内容的快照。我还没有足够深入地研究这一点,无法理解如何将一个转化为另一个。
.git/refs/stash
包含存储创建的提交树的哈希值。
.git/logs/refs/stash
包含类似于 reflog 的元数据块,有关 .git/refs/stash
中之前的存储。
.git/index
保存工作树中每个文件的条目列表。这些条目包含完整路径和文件名,以及有关文件的缓存元数据,包括文件系统元数据和 git 相关元数据。
“
git add
”都将文件的副本添加到对象存储中,并在 .git/index 中设置该文件的暂存标志。
对于“
git stash
”创建提交树,已更改(编辑)但尚未使用“git add
”暂存的文件必须添加到对象存储中。 “git stash
”通过构建临时索引文件来实现此目的。
全部存储在
.git/refs/stash
中。 git stash
无限期地保存藏品,所有藏品都由git stash list
列出。
请注意,删除或清除存储会将其从存储列表中删除,但您可能仍然有未修剪的节点,其中包含正确的数据。