Używam git
do zarządzania plikami w katalogu lokalnym na komputerze z systemem Windows - nie jest tu zaangażowana żadna sieć, nie pcham ani nie ściągam do / z innego komputera. Mój katalog zawiera może 100 plików, wszystkie pliki testowe, całkiem małe. Kiedy biegam git status
, ukończenie tego regularnie zajmuje 20-30 sekund. Czy to normalne? Czy jest coś, co mogę zrobić, aby to przyspieszyć, lub lepszy sposób, aby sprawdzić, jaki jest stan mojego repozytorium (zmienione pliki, nieśledzone pliki itp.)? git
Wydaje się, że inne polecenia działają znacznie szybciej.
85
Odpowiedzi:
Czy próbowałeś git gc ? To usuwa skorupę z repozytorium git.
źródło
git status
pomocątime
polecenia i dostał „prawdziwy” czas 30.464s. Potem pobiegłgit gc
potemtime git status
jeszcze raz i mam czasie rzeczywistym 35.409s. Dość dziwne.git status
wielu razy z rzędu kolejne przebiegi zajmują tylko ułamek pierwszego. Tak więc, jeśli biegaszgit status
,git gc
a potemgit status
znowu, oczekuje się, że będzie działać bardzo szybko.W podobnym przypadku stwierdziłem, że posiadanie repozytorium git w katalogu poniżej mojego istniejącego repozytorium git spowodowało ogromne spowolnienie.
Przeniosłem drugie repozytorium git w inne miejsce i teraz szybkość jest duża!
źródło
Czy używasz jakiegoś oprogramowania antywirusowego? Może to przeszkadza.
git
jest dla mnie bardzo szybki w systemie Windows z repozytoriami tysięcy plików.źródło
Czy próbowałeś przepakować? git-repack .
W przeciwnym razie spróbuj skopiować katalog i usunąć folder .git w zduplikowanym katalogu. Następnie utwórz nowy katalog git i sprawdź, czy nadal działa wolno.
Jeśli nadal działa wolno, oznacza to problem z systemem lub sprzętem. Git kończy status setek plików w mniej niż 5 sekund.
źródło
Z jakiegoś powodu
git status
jest szczególnie powolny po przeniesieniu lub skopiowaniu folderu repozytorium do nowej lokalizacji.W takim przypadku kolejne przebiegi są zwykle szybsze.
źródło
git status
polecenie początkowe , więc wykonanie prawdopodobnie zajęłoby tyle samo czasu.Mój
git status
był bardzo powolny (do jednej minuty), ponieważ.gitignore
plik globalny znajdował się w moim profilu użytkownika systemu Windows, który był przechowywany w niedostępnym udziale sieciowym.git config --global core.excludesfile
pokazał coś takiego
\\Nxxxx0\User\Username\Eigene Dateien\gitignore_global.txt
Z jakiegoś powodu
\\Nxxxx0
był niedostępny, a mój profil użytkownika został załadowany z systemu zapasowego\\Nxxxxx1
. Zrozumienie tego zajęło trochę czasu, ponieważ zwykle mój profil użytkownika jest powiązany z literą dysku przez skrypt uruchamiania przedsiębiorstwa, a dostęp do tej litery dysku działał normalnie. Nie jestem pewien, dlaczego git-config użył udziału sieciowego, a nie litery dysku (prawdopodobnie winę ponosi młodszy ja)Po ustawieniu
git config --global core.excludesfile $HOME/Eigene\ Dateien/gitignore_global.txt
git status
wrócił do normalnej prędkości.źródło
W
git fsck
przeszłości bieganie rozwiązało ten problem.źródło
Dla mnie powolność wynikała z posiadania wielu nieśledzonych plików (plików tymczasowych i wyjściowych ze skryptów). Bieganie
git status -uno
, które wyklucza nieśledzone pliki, działa znacznie szybciej i spełnia moje wymaganiaźródło
Problem polegał na tym, że miałem wiele różnych repozytoriów sklonowanych na moim lokalnym dysku twardym, im więcej masz repozytoriów, tym dłużej potrwa uruchamianie poleceń, takich jak status git.
Po prostu usunąłem wiele repozytoriów, których już nie potrzebowałem lokalnie, a mój status git zmienił się z 1 minuty ~ do 5 sekund.
Nie widzę tutaj odpowiedzi podobnych do tej.
źródło
git status
jakikolwiek wpływ na standard, który uruchamiasz w jednym katalogu. Jeśli twoje repozytoria są wyewidencjonowane do różnych katalogów, możesz uruchomić tylkogit status
dla jednego z nich na raz. To może być inna historia, jeśli twoje repozytoria git pokrywają się, ale i tak jest to zły pomysł.Innym aspektem,
git status
który zostanie ulepszony (w Git 2.14.x / 2.15, Q4 2017) jest pokazanie również ignorowanych plików (git status --ignored
)Zobacz commit 5aaa7fd (18 września 2017) autorstwa Jamesona Millera (
jamill
) .(Scalone przez Junio C Hamano -
gitster
- w zatwierdzeniu 075bc9c , 29 września 2017 r.)Aby uzyskać więcej ulepszeń (ustawionych w Git 2.17, Q2 2018), zobacz tę odpowiedź .
źródło
node_modules
może mieć wpływ ta zmiana perf. Tylko może.Starsze wersje git mają problem z wydajnością ze statusem git - zobacz Sposoby poprawy wydajności statusu git, aby uzyskać więcej informacji.
git 2.13 ma 1 poprawkę i 2,17 więcej. przeniosłem się z 2.7 do 2.23 i rozwiązałem problem z wolnym stanem. Wkrótce planowana jest kolejna poprawa w wersji 2.24.
źródło
W moim przypadku powolność była spowodowana działaniem
git status
jako inny użytkownik niż właściciel plików w projekcie.Chociaż nie ma to zastosowania we wszystkich przypadkach, prosty
chown
dla bieżącego użytkownika może załatwić sprawę.źródło
Spróbuj zacząć od nowego klonu swojej kasy.
a następnie uzyskaj status git w mynewrepo.
Alternatywnie, jeśli jesteś odważniejszy, wyczyść śmieci z istniejącej kasy.
Dzięki temu git nie musi skanować niektórych (prawdopodobnie dużych) zestawów ignorowanych lub niezarejestrowanych plików.
źródło