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
Odpowiedz
Użyj "git rebase --interactive". Oznacz pierwszych pięć commitów jako "pick", a pozostałe jako "squash".
po pobraniu z innych repozytoriów, które również byłyby synchronizowane, tak? –
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
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.
wiem o tym, ale również nie chcę przechowywać więcej niż 5 kopii w repozytoriach, a nie tylko klonach. –
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. –
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ść.
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
.
- 1. Git - Usuń commit z historii
- 2. Skopiuj repozytorium git bez historii
- 3. Uzyskiwanie całej historii plików za pomocą git-p4
- 4. Utrzymywanie repozytorium Git w innym repozytorium git
- 5. Przeglądanie historii plików git
- 6. git rebase do migracji kilku commitów?
- 7. jak kontrolować własność plików automatycznie pchanych do repozytorium git za pomocą haków commitów?
- 8. Wykreślanie pewnej liczby nierówności jako płaszczyzn
- 9. Jak działa podpisywanie commitów?
- 10. Filtrowanie historii ZSH za pomocą komendy
- 11. Dlaczego polecenie git-svn dcommit zostawia duplikaty commitów w moim repozytorium git? Czy mogę to powstrzymać?
- 12. Organizacja projektu za pomocą Maven + Git
- 13. Ponownie włącz dublowanie za pomocą git-svn
- 14. przynieść repozytorium git do pewnej wersji
- 15. Git: zaktualizuj repozytorium do pewnej wersji
- 16. Ładowanie wielu tabel za pomocą SSIS utrzymywanie relacji klucza obcego
- 17. Squash pierwszy N zobowiązuje historii git/zachować resztę jak
- 18. Python pandy: wyklucza wiersze poniżej pewnej liczby częstotliwości
- 19. Git: przenoszenie commitów z master do innego oddziału
- 20. Zapytanie SQL do usuwania najstarszych wierszy powyżej pewnej liczby wierszy?
- 21. Limit liczby oddziałów git
- 22. Naprawianie historii Git po pobraniu niewłaściwego repozytu
- 23. git rozszerzenia pojedynczy plik historii dyferencjału tylko
- 24. Zapisywanie historii od Clearcase do Git?
- 25. Git squash zobowiązuje plików (przemianowany historii zachować)
- 26. Rozwidlenie za pomocą TFS Git
- 27. usuwanie pliku z historii git nie działa
- 28. Utrzymanie projektu za pomocą Git
- 29. String podzielić na nowej linii, zakładki i pewnej liczby miejsc
- 30. Ustalanie liczby rdzeni procesowych za pomocą C++
Wątpię, ale podoba mi się ten pomysł. –