我对git很新,并对存储有一些疑问。如果我在一个分支机构工作但是无法到达我可以提交分支的位置,那么使用存储是正确的。我关于藏匿的问题是:
如果有人能够迅速帮助澄清这些,我们将非常感激。
答案 0 :(得分:23)
1 - 保存了多少个藏匿处?
Stashes不会凭空出现;只有你使用
创建它们git stash
或等同地
git stash save
那么节省了多少?和你一样多。
2 - 这些藏匿处存放了多长时间?
这个问题看起来很无辜,但答案其实很微妙。这里要考虑两个方面:1)存储reflog,以及2)存储库的对象数据库。
创建存储时,Git
--include-untracked
标志,则为三个)提交对象:一个对应于工作树中的WIP(正在进行中),另一个对应于您的临时区域(又名索引)的状态。编辑:这些提交对象是真正的提交,可以通过在它们上运行git cat-file -t
来验证。他们碰巧无法从任何分支机构到达;见torek's comment。
默认情况下,Git的垃圾收集会自动删除超过90天的reflog条目;你可以指定一个不同的"生命周期"对于stash reflog条目,通过运行
git config gc.refs/stash.reflogexpire <lifetime>
除了上面描述的垃圾收集机制外,Git不会自行删除存储空间;只要您不自愿
,存储将保留在您的本地存储库中(至少90天)使用
删除git drop <stash-reference>
从stash reflog中删除指定的存储条目;
pop ,使用
git pop <stash-reference>
应用指定的存储,然后从存储reflog中删除相应的条目;或
运行
git stash clear
删除存储reflog的所有条目(注意那个)。
但是,请注意,这三个操作仅影响存储reflog。特别是,他们不会立即导致相关的&#34; WIP&#34;和&#34;索引&#34;要从存储库的数据库中删除的对象;他们只是让那些物体无法到达。后者将保留在&#34;存储库中。有一段时间,直到他们最终被垃圾收集并死于真正的死亡&#34;。
这是一件有用的事情:如果你不小心掉落藏匿物,你仍然可以从你的仓库的内脏中找回它,如果你能记住或识别你的它的两个对象(WIP和索引)。
3 - 他们是否只是暂时保存工作,以便在重新启动计算机时丢失更改?
没有。 Stashes与任何其他提交对象没有什么不同;重启对他们没有影响。
答案 1 :(得分:3)
Git stashes被保存,直到您的硬盘死亡(与提交不同,通常通过git push
传输到其他计算机,因此将比硬盘故障更长)。
你可以拥有任意数量的藏匿处。通过运行git stash drop
或git stash clear
(阅读相关文档),在您感觉到的时候摆脱旧的。