Jak często powinieneś używać git-gc?
Strona podręcznika mówi po prostu:
Zachęca się użytkowników do regularnego uruchamiania tego zadania w każdym repozytorium, aby zachować dobre wykorzystanie miejsca na dysku i dobrą wydajność operacyjną.
Czy są jakieś polecenia, aby uzyskać liczbę obiektów, aby dowiedzieć się, czy nadszedł czas na gc?
gc.autodetach
(Git 2.0 Q2 2014) może pomóc w uruchomieniugit gc --auto
bez blokowania użytkownika. zobacz moją odpowiedź poniżej .Odpowiedzi:
Zależy to głównie od tego, ile repozytorium jest używane. Jeden użytkownik loguje się raz dziennie, a operacja rozgałęzienia / scalania / etc raz w tygodniu, prawdopodobnie nie musisz uruchamiać go częściej niż raz w roku.
Z kilkudziesięcioma programistami pracującymi nad kilkadziesiąt projektów, z których każdy sprawdza 2-3 razy dziennie, możesz chcieć uruchamiać go co noc.
Jednak nie zaszkodzi uruchamiać go częściej niż to konieczne.
Chciałbym uruchomić to teraz, a następnie za tydzień zmierzyć wykorzystanie dysku, uruchomić go ponownie i ponownie zmierzyć wykorzystanie dysku. Jeśli spadnie o 5%, uruchom go raz w tygodniu. Jeśli spadnie więcej, uruchom go częściej. Jeśli spadnie mniej, uruchom go rzadziej.
źródło
Zauważ, że wadą gromadzenia śmieci w repozytorium jest to, że śmieci są gromadzone. Jak wszyscy wiemy, jako użytkownicy komputerów, pliki, które obecnie uważamy za śmieci, mogą okazać się bardzo cenne trzy dni w przyszłości. Fakt, że git utrzymuje większość swoich śmieci, kilkakrotnie uratował mi bekon - przeglądając wszystkie wiszące zobowiązania, odzyskałem dużo pracy, którą przypadkowo wykonałem.
Więc nie bądź zbyt fajnym dziwakiem w swoich prywatnych klonach. Nie ma takiej potrzeby.
OTOH, wartość odzysku danych jest wątpliwa w przypadku repozytoriów wykorzystywanych głównie jako piloty, np. miejsce, z którego wszyscy deweloperzy pchają i / lub wyciągają. Tam sensowne może być częste rozpoczynanie biegu GC i przepakowywanie.
źródło
git gc --help
Konkretnie--prune
opcja).gc.reflogExpire
Wspomniano również o tym , co prowadzi mnie do przekonania, że żadne zobowiązanie, które odwiedziłeś w ciągu ostatnich 90 dni, nie zostanie zebrane. (Moja wersja git: v1.7.6)Najnowsze wersje git uruchamiają gc automatycznie w razie potrzeby, więc nie powinieneś nic robić. Zobacz sekcję Opcje man git-gc (1) : „Niektóre polecenia git uruchamiają git gc - automatycznie po wykonaniu operacji, które mogą spowodować powstanie wielu luźnych obiektów.”
źródło
gc --auto
.Jeśli używasz Git-Gui , powie Ci, kiedy powinieneś się martwić:
Następujące polecenie przyniesie podobny numer:
Tyle że od samego źródła git-gui sam wykona matematykę, licząc coś w
.git/objects
folderze i prawdopodobnie przybliżając (nie wiem, czytcl
poprawnie to przeczytać!).W każdym razie wydaje się , że daje ostrzeżenie na podstawie dowolnej liczby około 300 luźnych obiektów.
źródło
Git-Gui
icount-objects
nie są do końca dobrymi odpowiedziami na pytanie tutaj ... Ale powinny być!Rzuć go do pracy crona, która działa co noc (po południu?), Kiedy śpisz.
źródło
Używam git gc po tym, jak zrobię dużą kasę i mam dużo nowego obiektu. może zaoszczędzić miejsce. Np. Jeśli kasujesz duży projekt SVN za pomocą git-svn i robisz git gc, zwykle oszczędzasz dużo miejsca
źródło
Możesz to zrobić bez żadnych zakłóceń dzięki nowemu ustawieniu (Git 2.0 Q2 2014)
gc.autodetach
.Zobacz zatwierdzenie 4c4ac4d i zatwierdzenie 9f673f9 ( Nguyễn Thái Ngọc Duy, aka pclouds ):
Od czasu wydania 2.0 pojawił się błąd: git 2.7 (czwarty kwartał 2015) dopilnuje, aby nie stracić komunikatu o błędzie .
Zobacz commit 329e6e8 (19 września 2015) autor: Nguyễn Thái Ngọc Duy (
pclouds
) .(Połączone przez Junio C Hamano -
gitster
- w commit 076c827 , 15 października 2015)źródło
Ten cytat pochodzi z; Kontrola wersji za pomocą Git
źródło
git commit --amend
). Można to zweryfikować za pomocągit log --reflog
. Odepchnąłem gałąź do zdalnego repozytorium i ponownie sprawdziłem moje drzewo; nieosiągalne zobowiązania wciąż tam były. Najwyraźniejgit gc
nie uruchomiono go, gdy nastąpiło to wypchnięcie. …Używam, gdy dokonuję dużego zatwierdzenia, przede wszystkim, gdy usuwam więcej plików z repozytorium. Potem zatwierdzenia są szybsze
źródło
Nie musisz używać
git gc
zbyt często, ponieważgit gc
(Garbage collection) jest uruchamiany automatycznie na kilku często używanych poleceniach:Źródło: najlepsze praktyki git gc i FAQS
źródło