Zmniejsz repozytorium Git, usuwając historię dzienników niektórych plików z .gitfolderu na podstawie ich ostatniej aktualizacji.
Napotkałem ten sam problem na moim komputerze lokalnym. Powodem było to, że usunąłem kilka ogromnych plików z mojego lokalnego i przekazałem je do centralnego repozytorium. Ale zdarzenie po git status, git fetchi git pull. .gitRozmiar mojego folderu to około 3 GB. później uruchomiłem następujące polecenie, aby zmniejszyć rozmiar .gitfolderu, biorąc pod uwagę pliki, które zmieniły się / wygasły miesiąc temu.
Komenda
$ git remote prune origin && git repack && git prune-packed && git reflog expire --expire=1.month.ago && git gc --aggressive
Git Polecenia i ich krótki opis:
git-prune - Usuń wszystkie niedostępne obiekty z bazy danych obiektów
git-repack - Spakuj rozpakowane obiekty do repozytorium
git-prune-packed - Usuń dodatkowe obiekty, które są już w plikach paczek.
git reflog: Git śledzi aktualizacje końcówek gałęzi za pomocą mechanizmu zwanego dziennikami referencyjnymi lub „reflogami”. Reflogs śledzi, kiedy odniesienia Git zostały zaktualizowane w lokalnym repozytorium. Oprócz reflogów końcówek gałęzi, utrzymywany jest specjalny reflog dla skrytki Gita. Reflogi są przechowywane w katalogach w katalogu lokalnego repozytorium .git. Katalogi git reflog można znaleźć pod adresem .git/logs/refs/heads/., .git/logs/HEADa także, .git/logs/refs/stashjeśli w repozytorium użyto skrytki git. git reflog na wysokim poziomie na Rewriting Historystronie.
git reflog expire --expire=now --expire-unreachable=now --all
Oprócz zachowywania historii w reflogu, Git ma wewnętrzne daty wygaśnięcia, kiedy będzie przycinał odłączone zatwierdzenia. Ponownie, są to wszystkie szczegóły implementacji, które git gcobsługują i git prunenie powinny być używane samodzielnie.
git gc --aggressive: git-gc - wyczyść niepotrzebne pliki i zoptymalizuj lokalne repozytorium.
W tle git gc faktycznie wykonuje pakiet innych wewnętrznych komend, takich jak git prune, git repack, git pack and git rerere. Głównym obowiązkiem tych komend jest zidentyfikowanie wszystkich obiektów Git, które są poza poziomami progowymi ustawionymi w git gckonfiguracji. Po zidentyfikowaniu obiekty te są następnie kompresowane lub odpowiednio przycinane.
Zwykłe z wynikiem:
$ git remote prune origin && git repack && git prune-packed && git reflog expire --expire=1.month.ago && git gc --aggressive
Enumerating objects: 535, done.
Counting objects: 100% (340/340), done.
Delta compression using up to 2 threads
Compressing objects: 100% (263/263), done.
Writing objects: 100% (340/340), done.
Total 340 (delta 104), reused 0 (delta 0)
Enumerating objects: 904, done.
Counting objects: 100% (904/904), done.
Delta compression using up to 2 threads
Compressing objects: 100% (771/771), done.
Writing objects: 100% (904/904), done.
Total 904 (delta 343), reused 561 (delta 0)
git count-objects -v?