我对git很新,并对存储有一些疑问.如果我在一个分支机构工作但是无法到达我可以提交分支的位置,那么使用存储是正确的.我关于藏匿的问题是:
如果有人可以迅速帮助澄清这些将非常感激.
jub*_*0bs 26
1 - 保存了多少个藏匿处?
圣物不会出现在空气中; 只有你创建它们,使用
git stash
Run Code Online (Sandbox Code Playgroud)
或者,等效地,
git stash save
Run Code Online (Sandbox Code Playgroud)
那么有多少人被救了?和你一样多.
2 - 这些藏匿处存放了多长时间?
这个问题看起来很无辜,但答案其实很微妙.这里要考虑两个方面:1)存储reflog,以及2)存储库的对象数据库.
当你创建一个藏匿,Git
--include-untracked在存储库的数据库中创建两个(如果使用标志,则为三个)提交对象:一个对应于工作树中的WIP(正在进行中),另一个对应于暂存区域(即索引)的状态.编辑:那些提交对象是真正的提交,可以通过运行来验证git cat-file -t.他们碰巧无法从任何分支机构到达; 看到torek的评论.
默认情况下,Git的垃圾收集将自动删除超过90天的reflog条目; 您可以通过运行为stash reflog条目指定不同的"生命周期"
git config gc.refs/stash.reflogexpire <lifetime>
Run Code Online (Sandbox Code Playgroud)
除了上面描述的垃圾收集机制,Git不会自行删除存储区; 只要您不自愿,存储将保留在您的本地存储库中(至少90天)
放弃它,使用
git stash drop <stash-reference>
Run Code Online (Sandbox Code Playgroud)
从存储reflog中删除指定的存储条目;
弹出它,使用
git stash pop <stash-reference>
Run Code Online (Sandbox Code Playgroud)
它应用指定的存储,然后从存储reflog中删除相应的条目; 要么
跑
git stash clear
Run Code Online (Sandbox Code Playgroud)删除存储reflog的所有条目(小心那个).
但是,请注意这三个操作仅影响存储reflog.特别是,它们不会立即导致从存储库的数据库中删除关联的"WIP"和"索引"对象; 他们只是让那些物体无法到达.后者将在"存储库中停留"一段时间,直到它们最终被垃圾收集并死于"真正的死亡".
这是一个有用的事情要知道:如果你不小心丢下一个藏品,你仍然可以从你的仓库的内脏中检索它,如果你能记住或识别它的两个对象(WIP和索引)的SHA.
3 - 他们是否只是暂时保存工作,以便在重新启动计算机时丢失更改?
不存在与任何其他提交对象没有区别; 重启对他们没有影响.
| 归档时间: |
|
| 查看次数: |
4002 次 |
| 最近记录: |