Git Stashes存放在哪里?

Typ*_*101 10 git git-stash

我一直在使用PhpStorm,最近发现了我的变化.在那之后的某个时刻,我的PC个人资料变得腐败,不得不重建.

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

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

Pau*_*aul 13

从文档中,最新的文档存储在其中,./.git/refs/stash而较旧的文档存在于文档reflogref.

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

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


Ste*_*ens 9

由“ git stash”存储的实际数据(即工作树的当前版本和.git / index的内容)存储为两个提交树。

一棵提交树包含工作树当前状态的快照。这里有一些棘手的地方,请参阅下文。

有人告诉我,另一个提交树用于在存储时存储.git / index内容的快照。我还没有足够深入地研究(至今)以了解如何将一个翻译成另一个。

.git / refs / stash包含隐藏创建的提交树的哈希值。

.git / logs / refs / stash在.git / refs / stash中包含一个类似于reflog的关于存储区的元数据块。

.git / index包含一个条目列表,每个条目对应一个工作树中的文件。这些条目包含完整路径和文件名以及有关文件的缓存元数据,包括文件系统元数据和与git相关的元数据。

“ git add”既将文件的副本添加到对象存储,又在.git / index中设置该文件的暂存标志。

为了使用“ git stash”创建提交树,必须将已更改(编辑)但尚未使用“ git add”暂存的文件添加到对象存储中。“ git stash”通过构建一个临时索引文件来做到这一点。

  • 我在运行 Git 2.22 的 Mac 上没有“.git/refs/stash”文件,但我确实将它们全部列在“.git/logs/refs/stash”中。 (2认同)

Shr*_*n40 6

全部存储在.git/refs/stash. git stash无限期地保存藏品,并且所有藏品都按 列出git stash list

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