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會話