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. CURL是否銷燬會話?
- 2. PHP會話創建並銷燬提交?
- 3. 提升condition_variable銷燬聲明
- 4. Data_Wrap_Struct和銷燬命令
- 5. 如何檢查一個git倉庫是否有任何提交?
- 6. 我是否必須按順序明確銷燬對象
- 7. 是否有一個git命令在提取後顯示新的上游提交?
- 8. 是否有任何Draw2d.js畫布銷燬方法?
- 9. Git Bash腳本檢查回購是否有任何提交?
- 10. 銷燬GtkBuilder是否銷燬所有創建的小部件?
- 11. 是否有任何git命令來顯示關於本地分支的信息?
- 12. 是否有`git`命令一次提交所有添加/修改/刪除?
- 13. 是否有任何Git命令將我們所有醜陋的提交合併爲一個?
- 14. 是否有可能撤銷提交?
- 15. (PHP)如何正確銷燬會話cookie?
- 16. 在生命週期或任何階段銷燬會話bean
- 17. 如何正確地銷燬鏈表?
- 18. git是否提交整個提交行?
- 19. 是否有任何git命令以人類可讀的方式顯示提交消息並排來源?
- 20. GIT中是否有單個命令可用於壓縮最後n個提交?
- 21. 是否可以在git中一次一個地提交提交,而不是同時提交所有提交?
- 22. electron.io是否有權運行git命令?
- 23. 是否有git --super/- force pull命令?
- 24. 銷燬會話
- 25. 銷燬會話
- 26. Php會話變量銷燬此說明
- 27. ExtJS存儲銷燬事件提交
- 28. 的Git:命令取消提交
- 29. 通過提交命令的Git結賬
- 30. Git命令顯示頭提交ID?