Git Stash 存储在哪里?

问题描述 投票:0回答:3

我一直在使用 PhpStorm,最近隐藏了我的大量更改。此后的某个时候,我的电脑配置文件被损坏,必须重建。

现在我有了新的 PC 配置文件,PhpStorm 没有显示我隐藏的更改。

有什么办法可以把它们找回来吗?

git git-stash
3个回答
28
投票

从文档来看,最新的存储在

./.git/refs/stash
中,而较旧的存储在该
reflog
ref
中。

顺便说一句,我发现定期使用 git stash 是一种不好的做法。一般来说,更喜欢在功能分支上进行许多小提交。这样你就很少需要隐藏,而且当你这样做时,它也很少被存储。我通常只在需要触摸某样东西几分钟时才藏起来,然后在我看完某样东西后涂抹。

https://git-scm.com/docs/git-stash


16
投票

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
”通过构建临时索引文件来实现此目的。


6
投票

全部存储在

.git/refs/stash
中。
git stash
无限期地保存藏品,所有藏品都由
git stash list
列出。

请注意,删除或清除存储会将其从存储列表中删除,但您可能仍然有未修剪的节点,其中包含正确的数据。

© www.soinside.com 2019 - 2024. All rights reserved.