2009-12-08 93 views
6

我有一個存儲大量大型二進制文件的存儲庫。是否可能將git設置爲僅保留最後n個提交?比如我只想保留這個存儲庫歷史記錄中最後5個文件的副本?但我很想不要每5次提交一次手動執行此操作?使用git在歷史記錄中保存特定數量的提交

+1

我對此表示懷疑,但我喜歡這個主意。 – 2009-12-08 21:36:43

回答

3

使用「git rebase --interactive」。將前五個提交標記爲「挑選」,其餘爲「壓扁」。

+0

當從其他回購拉,這也會同步,是嗎? – 2009-12-09 23:25:43

+0

每次更改歷史記錄時,克隆目錄都必須提取完整更改的歷史記錄,因此克隆存儲庫中的「git fetch」可能需要一些時間 - 但是,它們將同步。 – Bombe 2009-12-11 23:43:51

2

Kindasorta。 git clone --depth N將允許您執行存儲庫的「淺層克隆」。但是,您無法從此推/ clone/fetch,因此作爲開發人員並不是非常有用。

+0

我知道這一點,但我也不想在回購協議中保留超過5份,而不僅僅是克隆。 – 2009-12-08 21:49:23

+0

這是不可能的,您將不得不按照@Dustin的建議重寫存儲庫。我建議你重新評估你想如何存儲這些大文件。也許Git不是最好的解決方案。 – 2009-12-08 22:16:12

4

要做到這一點的唯一方法是定期重寫存儲庫。

提交包含提交元數據,提交信息,提交的父級和您提交的樹的散列。在不影響現在的情況下改變過去的事情是不可能的。

3

正如達斯汀提到的,唯一的方法就是週期性地重寫倉庫。 Git肯定沒有對此的「內置」支持,也不可能很快有這樣的支持(這種東西的基本設計排除了這個特性)。這意味着如果你想這樣做,你將不得不手動完成。

如果您想嘗試一下,對this question的回答顯示瞭如何使用git filter-branch完成此操作的示例。

相關問題