Git Stashes存放在哪里?

时间:2016-11-17 11:19:17

标签: git git-stash

我一直在使用PhpStorm,最近隐藏了一大堆我的变化。在那之后的某个时刻,我的PC个人资料变得腐败,不得不重建。

现在我有一个新的PC配置文件,PhpStorm没有显示我的存储变化。

有什么方法可以让他们回来吗?

3 个答案:

答案 0 :(得分:12)

从文档中,最新版本存储在./.git/refs/stash中,而较旧版本则存储在reflog的{​​{1}}中。

顺便说一句,我发现保持定期使用git stash是一种不好的做法。通常,在功能分支上更喜欢许多小提交。这种方式你很少需要藏匿,当你这样做的时候很少存储。我通常只在我需要触摸几分钟的东西时藏匿,然后在我看完某些东西时应用。

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

答案 1 :(得分:4)

" 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"这是通过构建临时索引文件来实现的。

答案 2 :(得分:2)

全部存储在.git/refs/stash中。 git stash无限期地保存了藏匿处,并且所有这些都被git stash list列出。

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