Git Gui: Ciągłe pobieranie „To repozytorium zawiera obecnie około 320 luźnych obiektów”.

89

Za każdym razem, gdy uruchamiam Git Gui w określonym projekcie, otrzymuję następujący komunikat:

To repozytorium zawiera obecnie około 320 luźnych obiektów.

wprowadź opis obrazu tutaj

Następnie klikam Tak i pojawia się to okno dialogowe:

wprowadź opis obrazu tutaj

Rzecz w tym, że kiedy ponownie otwieram Git Gui, otrzymuję dokładnie tę samą wiadomość , znowu około 320 luźnych obiektów! To tak, jakby kliknięcie Tak nie miało żadnego efektu.

sashoalm
źródło
Czy możesz opublikować wynik git count-objects -v?
CB Bailey,
5
@TheCodeArtist Dzięki, znalazłem tam odpowiedź. Uruchamianie git gcjawnie z wiersza poleceń zadziałało dla mnie, zgodnie z tym komentarzem .
sashoalm

Odpowiedzi:

81

Po prostu pomijanie wyskakującego okienka , ponieważ Jak pominąć wyskakujące okienko „Loose Object” podczas uruchamiania „git gui” sugeruje w zaakceptowanej odpowiedzi przeoczenie faktu, że Git informuje Cię o możliwym problemie z wydajnością. Powinno to być naprawione, uruchamiając to polecenie z wiersza poleceń:

cd path/to/your/git/repo
git gc --aggressive

Z wyniku git help gc:

Uruchamia szereg zadań porządkowych w bieżącym repozytorium, takich jak kompresowanie wersji plików (w celu zmniejszenia miejsca na dysku i zwiększenia wydajności) oraz usuwanie nieosiągalnych obiektów, które mogły zostać utworzone podczas wcześniejszych wywołań git add.

Zachęca się użytkowników do regularnego uruchamiania tego zadania w każdym repozytorium, aby utrzymać dobre wykorzystanie miejsca na dysku i dobrą wydajność operacyjną.

--agresywny

Zwykle git gc działa bardzo szybko, jednocześnie zapewniając dobre wykorzystanie miejsca na dysku i wydajność. Ta opcja spowoduje, że git gc będzie bardziej agresywnie optymalizował repozytorium kosztem dużo więcej czasu. Efekty tej optymalizacji są trwałe, więc ta opcja musi być używana tylko sporadycznie; mniej więcej co kilkaset zestawów zmian.

Powinno to powstrzymać wyświetlanie monitu przez jakiś czas.

Greg Burghardt
źródło
19
Dziwne jest to, że samo uruchomienie git gcz wiersza poleceń naprawiło to za mnie. Może git guiprzebiegać coś w stylu git gc --extra-unaggressive:)
sashoalm
38
git prunewydaje się to naprawiać, gdy git gcnie.
Mahn
1
Na ogół nie chcesz biegać z --aggressive; powoduje gitto ponowne obliczenie delt, co jest zwykle bezproduktywne i bardzo czasochłonne; zobacz ten post - manstrona wprowadza w błąd. Prawdopodobnie git gcw tym przypadku wystarczy zwykły .
Jeff Clites,
16
Musiałem użyć, --prune=allaby pozbyć się wiadomości. Ani git gcw wierszu poleceń, ani w opcjach, --aggressiveani --prunenie załatwił sprawy.
świt
1
@JeffClites Artykuł, do którego się odnosisz, ma (na dzień dzisiejszy) 11 lat i stwierdza: „Z tego powodu - agresywny prawdopodobnie zostanie usunięty ze stron podręcznika i pozostawiony jako funkcja nieudokumentowana na jakiś czas”. Bez dalszych poszukiwań wydaje się dziwne, że zepsuta wiadomość wciąż tam jest. Czy jest szansa, że ​​zachowanie zostało zmodyfikowane od momentu napisania artykułu?
fajka
3

Używam polecenia:

git gc --prune = teraz

i nie ma już zbyt wielu ostrzeżeń o luźnych przedmiotach po zakończeniu.

źródło odniesienia: https://git-scm.com/docs/git-gc

AdvenC
źródło
1
Muszę powiedzieć, że to rozwiązanie zadziałało dla mnie. O dziwo, git gc --aggressivenie usunęło ostrzeżenia (ani też kliknięcie interfejsu użytkownika, który wydaje się wykonywać proste git gc).
saeraphin