Git是否真的会摧毁提交或者只是孤儿?我知道,git垃圾收集器将删除孤立的提交时运行与git gc
在任何间隔设置在git配置。是否还有其他情况会删除提交?是否有任何git命令会明确地销毁提交?
0
A
回答
2
Git最终可能会真正销毁一些对象,包括未提交的提交;但它可能不会。为了达到这个目的,请仔细阅读。
最直接的控制可通过git prune
,git repack
和git prune-packed
获得。运行git gc
运行所有这些,以及更多。假设git prune
或甚至是git gc --prune=now
将会诀窍的主要问题是现在无法访问的对象可能是打包的。
通常,您应该首先终止reflogs,因为删除过期的reflog条目可能会导致对象无法访问。使用git gc
以相对安全的方式以正确的顺序完成所有这些工作:首先过滤reflogs,然后修剪(仔细地),然后重新打包,然后修剪打包。 prune
步骤宽松未参考的对象自己过期。 之后,其他步骤重新包装正在使用的旧对象,并删除刚刚打包的对象。
这一系列事件就是为什么我们需要git repack -d
或甚至-ad
,其次是git prune-packed
。但是,如果某些包标有.keep
文件,则这些包将保留,如果包含其他未引用的对象,则这些对象也将保留。
由于多个GIT中的命令可以并行地运行,这是明智的提供,在此期间未引用的对象住,在情况下,他们将要成为引用的宽限期。请注意,它是git gc
,它插入默认的14天宽限期; git prune
默认为--expire=now
而不是--expire=2.weeks.ago
。这给Git命令336小时完成他们的工作和水泥参考:例如,git commit
运行git write-tree
其次是git commit-tree
,并且此树和提交都未被引用,直到git commit
也更新当前分支名称。通常情况下,整个过程只需要几毫秒,因此336小时应该足够的时间。
1
git-prune
有删除孤儿对象的明确任务声明。
相关问题
- 1. PHP会话创建并销毁提交?
- 2. 提升condition_variable销毁声明
- 3. 在活动Git服务器上'yit git remove'是否会销毁任何现有的回购或配置数据?
- 4. 如何检查一个git仓库是否有任何提交?
- 5. 我是否必须按顺序明确销毁对象
- 6. 是否有任何Draw2d.js画布销毁方法?
- 7. Git Bash脚本检查回购是否有任何提交?
- 8. 销毁GtkBuilder是否销毁所有创建的小部件?
- 9. 是否有`git`命令一次提交所有添加/修改/删除?
- 10. 是否有任何Git命令将我们所有丑陋的提交合并为一个?
- 11. 是否有可能撤销提交?
- 12. (PHP)如何正确销毁会话cookie?
- 13. git是否提交整个提交行?
- 14. GIT中是否有单个命令可用于压缩最后n个提交?
- 15. 是否可以在git中一次一个地提交提交,而不是同时提交所有提交?
- 16. Php会话变量销毁此说明
- 17. electron.io是否有权运行git命令?
- 18. 是否有git --super/- force pull命令?
- 19. 通过提交命令的Git结账
- 20. 的Git:命令取消提交
- 21. Git命令显示头提交ID?
- 22. 如果我在C++类中声明一个向量,它是否会被销毁,然后类的instate被销毁?
- 23. PHP - 在未提交的表单页面上正确销毁会话?
- 24. 预提交钩子中的Git命令不会返回正确的输出
- 25. Android:活动不会被销毁使用命令'finishActivity(999)'
- 26. 如何正确销毁AsyncTasks?
- 27. zsh - 显示git分支是否有提交过的提交
- 28. 销毁所有belongs_to协会销毁的记录
- 29. 线程被销毁时,变量是否被销毁?
- 30. 销毁Nuance会话