我有一個存儲大量大型二進制文件的存儲庫。是否可能將git設置爲僅保留最後n個提交?比如我只想保留這個存儲庫歷史記錄中最後5個文件的副本?但我很想不要每5次提交一次手動執行此操作?使用git在歷史記錄中保存特定數量的提交
回答
使用「git rebase --interactive」。將前五個提交標記爲「挑選」,其餘爲「壓扁」。
當從其他回購拉,這也會同步,是嗎? – 2009-12-09 23:25:43
每次更改歷史記錄時,克隆目錄都必須提取完整更改的歷史記錄,因此克隆存儲庫中的「git fetch」可能需要一些時間 - 但是,它們將同步。 – Bombe 2009-12-11 23:43:51
Kindasorta。 git clone --depth N
將允許您執行存儲庫的「淺層克隆」。但是,您無法從此推/ clone/fetch,因此作爲開發人員並不是非常有用。
我知道這一點,但我也不想在回購協議中保留超過5份,而不僅僅是克隆。 – 2009-12-08 21:49:23
這是不可能的,您將不得不按照@Dustin的建議重寫存儲庫。我建議你重新評估你想如何存儲這些大文件。也許Git不是最好的解決方案。 – 2009-12-08 22:16:12
要做到這一點的唯一方法是定期重寫存儲庫。
提交包含提交元數據,提交信息,提交的父級和您提交的樹的散列。在不影響現在的情況下改變過去的事情是不可能的。
正如達斯汀提到的,唯一的方法就是週期性地重寫倉庫。 Git肯定沒有對此的「內置」支持,也不可能很快有這樣的支持(這種東西的基本設計排除了這個特性)。這意味着如果你想這樣做,你將不得不手動完成。
如果您想嘗試一下,對this question的回答顯示瞭如何使用git filter-branch
完成此操作的示例。
- 1. 在git中保存歷史記錄
- 2. 如何在特定提交之前截斷git歷史記錄?
- 3. 如何在特定提交之前保留git check歷史記錄?
- 4. 在'git合併'後保留提交歷史記錄
- 5. 從Git歷史記錄中刪除具有歷史記錄的特定文件
- 6. 使用clearcase保存歷史記錄
- 7. Git:從歷史記錄中刪除替換文件的提交
- 8. 更改git歷史記錄中所有提交的時區
- 9. 如何在提交後刪除本地git歷史記錄?
- 10. 從git歷史記錄中刪除提交(永遠)
- 11. Git/Bitbucket - 從整個歷史記錄中刪除文件/提交
- 12. 只保留git repo的最近歷史記錄(因爲提交中斷)?
- 13. GIT - 重寫提交歷史記錄的作者
- 14. 包含/插入子模塊的Git歷史記錄提交
- 15. 禁用保存歷史記錄
- 16. 通過標記組合git repos保存歷史記錄
- 17. 如何恢復git提交歷史記錄
- 18. 不通過所有提交重寫git回購歷史記錄
- 19. 重寫git歷史記錄以解壓縮提交
- 20. 從特定提交開始直到最後一次提交的Git歷史記錄
- 21. 在SQL Server中使用StoredProcedure保存歷史記錄
- 22. 如何在Git中刪除項目的提交歷史記錄的一部分?
- 23. 從git存儲庫中刪除特定分支的全部歷史記錄
- 24. 如何使用cURL檢索特定時間段內的git提交歷史記錄?
- 25. 保存項目歷史記錄
- 26. 如何保存IEx歷史記錄?
- 27. 保持歷史記錄與WKWebView緩存
- 28. 重寫GIT中提交歷史
- 29. 如何在eclipse中刪除gerrit中的提交歷史記錄?
- 30. 如何在SQL Server中的歷史記錄表中存儲歷史記錄
我對此表示懷疑,但我喜歡這個主意。 – 2009-12-08 21:36:43