2009-12-08 13 views
6

Mam jedno repozytorium, w którym jest dużo dużych plików binarnych. Czy jest możliwe ustawienie git, aby zachować tylko ostatnią liczbę zatwierdzeń? Czy chcę tylko zachować ostatnie 5 kopii plików w historii tego repozytorium? Ale bardzo chciałbym nie robić tego ręcznie co 5 zatwierdzeń?Utrzymywanie pewnej liczby commitów w historii za pomocą git

+1

Wątpię, ale podoba mi się ten pomysł. –

Odpowiedz

3

Użyj "git rebase --interactive". Oznacz pierwszych pięć commitów jako "pick", a pozostałe jako "squash".

+0

po pobraniu z innych repozytoriów, które również byłyby synchronizowane, tak? –

+0

Sklonowane katalogi będą musiały pobrać pełną zmienioną historię za każdym razem, gdy zmienisz historię, więc "pobranie git" ze sklonowanego repozytorium może zająć trochę czasu - ale tak, będą one synchronizowane. – Bombe

2

Kindasorta. git clone --depth N pozwoli ci zrobić "płytki klon" repozytorium. Jednak nie można tego zrobić za pomocą polecenia push/clone/fetch, więc nie jest zbyt użyteczne jako programista.

+0

wiem o tym, ale również nie chcę przechowywać więcej niż 5 kopii w repozytoriach, a nie tylko klonach. –

+0

To nie jest możliwe, będziesz musiał przepisać repozytorium, jak sugeruje @Dustin. Proponuję ponownie ocenić, jak chcesz przechowywać te ogromne pliki. Być może Git nie jest najlepszym rozwiązaniem. –

4

Jedynym sposobem na to jest okresowe przepisywanie repozytorium.

Zatwierdzenie zawiera hasz meta danych zatwierdzenia, informacje o zatwierdzeniu, rodzic (y) zatwierdzenia i drzewo, które popełniasz. Nie można zmienić czegoś w przeszłości bez wpływu na teraźniejszość.

3

Jak wspomniał Dustin, jedynym sposobem na to jest okresowe przepisywanie repozytorium. Git z pewnością nie ma "wbudowanego" wsparcia dla tego, ani też nie ma takiego wsparcia w najbliższym czasie (podstawowy projekt tego rodzaju wyklucza tę funkcję). Oznacza to, że jeśli chcesz to zrobić, musisz to zrobić ręcznie.

Jeśli chcesz spróbować, odpowiedź na this question pokazuje przykład, jak można to zrobić, używając git filter-branch.

Powiązane problemy