Uwielbiam git i używam go na OS X prawie stale w domu. W pracy używamy svn w systemie Windows, ale chcemy przeprowadzić migrację do git, gdy tylko narzędzia w pełni dojrzeją (nie tylko TortoiseGit , ale także coś w rodzaju naprawdę fajnej integracji Visual Studio zapewnianej przez VisualSVN ). Ale błądzę ...
Niedawno zainstalowałem msysgit na moim komputerze z systemem Windows 7 i podczas korzystania z dołączonej wersji basha działa on horrendalnie wolno. I to nie tylko operacje git; clear
trwa około pięciu sekund . AAAAH!
Czy ktoś miał podobny problem?
Edycja : Wygląda na to, że msysgit nie gra dobrze z UAC i może być po prostu drobnym niedopatrzeniem projektowym wynikającym z programowania na XP lub uruchamiania Vista lub 7 z wyłączoną UAC; uruchomienie Git Bash przy użyciu Run as administrator
wyników w błyskawicznej szybkości, jaką widzę w systemie OS X (lub na 7 po uruchomieniu Git Bash bez połączenia sieciowego - patrz odpowiedź @Gauthier).
Edycja 2 : AH HA! Zobacz moją odpowiedź.
Odpowiedzi:
Możesz znacznie przyspieszyć Git w systemie Windows, uruchamiając trzy polecenia, aby ustawić niektóre opcje konfiguracyjne:
Uwagi:
core.preloadindex
wykonuje operacje na systemie plików równolegle, aby ukryć opóźnienie (aktualizacja: domyślnie włączone w git 2.1)core.fscache
naprawia problemy z UAC, dzięki czemu nie musisz uruchamiać Git jako administrator (aktualizacja: domyślnie włączona w Git dla Windows 2.8)gc.auto
minimalizuje liczbę plików w .git /źródło
git config --global core.fscache true
nic dla mnie nie zrobił; jednakgit config core.fscache true
załatwił sprawę. Zgodnie z tym dzieje się tak, ponieważ core.fscache jest ustawieniem na repozytorium.fscache
tylko jako ustawienie na repozytorium. Ustawienia globalne mają zastosowanie do wszystkich repozytoriów na komputerze, chyba że zostaną zastąpione ustawieniami dla każdego repozytorium.Wydaje się, że rozwiązaniem problemu spowolnienia w systemie Vista lub 7 jest uruchomienie Git Bash przy użyciu
Run as administrator
(lub wyłączenie UAC dla skrótu Git Bash ... lub całkowite wyłączenie UAC ). Różnica jest w nocy i w dzień, a używanie git na 7 jest znowu niesamowite.Wydaje się, że jest to związane ze znanym problemem i, jak spekulowałem, XP jako środowisko programistyczne dla msysgit jest częściowo odpowiedzialne.
źródło
ls
w praktycznie pustym katalogu)Dla mnie problemem było użycie __git_ps1 w zachęcie powłoki - myślę, że z powodu wolnego dostępu do dysku w msysgit.
Rozwiązaniem było usunięcie $ (__ git_ps1) z linii PS1 = ... w / etc / profile
szybki test, jeśli to rozwiązanie ma zastosowanie: w powłoce git wpisz export PS1 = '$' i sprawdź szybkość swoich operacji.
źródło
__git_ps1
aktywne, jeśli wyłączysz ustawienia SHOWDIRTYSTATE i / lub SHOWUNTRACKEDFILES, zobacz stackoverflow.com/a/4203968/321973Wypróbowałem tutaj wszystkie wskazówki (w tym tę z mojej drugiej odpowiedzi) na nowej maszynie, ale nie zadziałały, Git nadal jest wolny jak diabli.
Potem rzuciłem okiem na oprogramowanie virusscanning (które było preinstalowane): wyłączyłem skanowanie w czasie rzeczywistym w McAfee Security Center i presto: git działa teraz błyskawicznie! Czas potrzebny na „git svn rebase” spadł z 30 do 5 sekund (!).
Mam nadzieję, że jest to pomocne dla innych osób, które nadal mają problemy z powolnym Gitem w systemie Windows. Straciłem godziny, zastanawiając się nad tym.
źródło
Niestety 'Uruchom jako administrator' nie działało dla mnie - ale jak stwierdził Kevin L, odłączenie karty sieciowej, uruchomienie git bash, a następnie ponowne połączenie działało dobrze. Więc zawarłem to w skrypcie wsadowym i umieściłem do niego skrót w moim menu Start, oznaczony jako administrator:
Działa świetnie, o ile pamiętam, moja sieć zostaje chwilowo odcięta.
(Win 7 Professional SP1, Git wersja 1.7.8-preview20111206)
źródło
Mój kolega zachowywał się tak, gdy był uruchomiony Outlook. Próbuję zabić perspektywy i ponownie przetestować.
Możesz także spróbować przetestować:
źródło
Odkryliśmy, że podczas uruchamiania na niektórych kontach użytkowników oddzielne instancje git.exe są blokowane podczas wywołania
WaitForSingleObject()
, więc tylko jedna operacja git.exe może być efektywnie uruchomiona na raz. Zmiana konta użytkownika obejść ten problem.Szczegóły tutaj: https://stackoverflow.com/a/13054022
źródło
Mam MacAffee i mówiąc mu, aby wykluczyć katalog .git i wszystkie podkatalogi ze skanowania w czasie rzeczywistym, rozwiązałem problem z wydajnością.
źródło
Jak stwierdzono w tym problemie , działanie z wyłączoną wirtualizacją UAC (nie jest konieczne całkowite wyłączenie UAC) robi dużą różnicę.
W tym poście wyjaśniono, jak to wyłączyć (patrz na dole postu, tylko jedno ustawienie rejestru).
Na jednym (dużym) repozytorium SVN, z którym się łączę, wprowadzenie powyższej zmiany skróciło czas potrzebny na „git svn rebase” z 15 do 5 sekund, co oznacza 3-krotną poprawę.
źródło
Alternatywą dla mieszania się z UAC systemu Windows 7 może być zainstalowanie mysysgit poza folderem Program Files. Na przykład zamiast „C: \ Program Files (x86) \ Git” spróbuj zainstalować w „C: \ git”
Próbowałem majstrować przy kontrolkach „Uruchom jako administrator” i UAC bezskutecznie, ale poddałem się i zacząłem od nowej instalacji. Wcześniej uzyskiwałem około 15 KB / s max, ale teraz wynosi ponad 60 KB / s.
źródło
Jeśli wyłączenie UAC nie poprawi wydajności, spróbuj wyłączyć sterownik luafv. To zadziałało dla mnie po wypróbowaniu prawie wszystkiego na tej stronie i kilku podobnych pytań. Git przeszedł z niezwykle powolnego do całkiem przyzwoitego.
Otwórz „regedit” i znajdź klucz rejestru
Zmień wartość
Start
z 2 na 4.Znalazłem szczegóły dotyczące wyłączania
luafv
tutaj . Zauważ, że osobiście nie mam pojęcia, coluafv
jest lub co robi. Ta strona zawiera różne ostrzeżenia o złych rzeczach, które mogą się zdarzyć, jeśli ją wyłączysz, co prawdopodobnie powinieneś potraktować poważnie.EDYCJA: Poniższy komentarz wskazywał, że otrzymałem to w niewłaściwy sposób (link ma właściwą stronę). To jest teraz naprawione. Przepraszam ludzi, których rejestry skasowałem :)
źródło
Właśnie od jakiegoś czasu rozwiązałem ten problem i miałem trudności ze znalezieniem źródła problemu. W końcu znalazłem dwie rzeczy, które miały dramatyczny wpływ:
źródło
Problemem może być zakończenie bash, jeśli jest włączone, co jest nieco wolniejsze w systemie Windows niż Linux.
Spróbuj ustawić zmienną PS1 na coś prostego, np. „$”, I zobacz, czy to przyspieszy. Jeśli tak, pamiętaj, że wprowadzono pewne optymalizacje do ukończenia basha w ostatnich wersjach git. Być może potrzebujesz aktualizacji.
źródło
To zadziałało dla mnie. Nie oczekuj, że będzie to uniwersalne rozwiązanie.
Sprawdź zmienną środowiskową $ HOME w bash i windows. Jeśli wskazuje na konto użytkownika, sprawdź profil / uprawnienia użytkownika w systemie Windows. Zmień odpowiednio konto użytkownika lub $ HOME.
źródło
Napotkałem ten sam problem podczas uruchamiania git dla systemu Windows (msysgit) w systemie Windows 7 x64 jako ograniczone konto użytkownika przez dłuższy czas. Z tego, co przeczytałem tutaj i z innych miejsc, wspólnym tematem wydaje się być brak uprawnień administracyjnych i / lub UAC. Ponieważ UAC jest wyłączony w moim systemie, wyjaśnienie, że próbuje zapisać / usunąć coś w katalogu plików programu, jest dla mnie najbardziej sensowne.
W każdym razie rozwiązałem mój problem, instalując przenośną wersję git 1.8 z programem zipinstaller. Zauważ, że musiałem rozpakować plik dystrybucyjny .7z i przepakować go jako zip, aby zipinstaller działał. Musiałem również ręcznie dodać ten katalog do mojej ścieżki systemowej.
Wydajność jest teraz dobra. Mimo że jest zainstalowany w katalogu Program Files (x86), do którego nie mam uprawnień jako użytkownik z ograniczeniami, wydaje się, że nie ma tego samego problemu. Przypisuję to albo temu, że wersja przenośna jest nieco bardziej konserwatywna, jeśli zapisuje / usuwa pliki, co prawdopodobnie ma miejsce, albo aktualizacji z 1.7 do 1.8. Nie będę próbował określić, który z nich jest przyczyną, wystarczy powiedzieć, że teraz działa znacznie lepiej.
źródło
Możesz spróbować odinstalować msysgit, zrestartować system Windows, zainstalować najnowszą wersję msysgit. Wydawało się, że to działa dla mnie. Znalazłem tę sugestię tutaj:
https://stackoverflow.com/a/4506192/1413941
EDYTOWAĆ
PS Miałem już wyłączone UAC, zanim napotkałem powolne problemy z Gitem, więc nie wiem, czy wyłączenie UAC jest wymagane, czy nie, aby Git działał szybko.
źródło
Jak wskazano, najlepszym rozwiązaniem jest uruchomienie jako administrator. Jednak inną opcją , która przynajmniej przyspieszy stan git , jest trustctime = false . Przed tym statusem gita trwało około 30 sekund, a potem jest to ta sama kwota, która jest pokazana na wyjściu - zajęło X sekund, aby ...
źródło
Możesz również uzyskać istotny wzrost wydajności, zmieniając następującą konfigurację git:
Po uruchomieniu prostego
git status
polecenia w systemie Windows 7 x64 uruchomienie komputera zajęło ponad 30 sekund. Po zdefiniowaniu tej opcji polecenie jest natychmiastowe.Aktywacja własnego śledzenia Git, jak wyjaśniono na następnej stronie, pomogła mi znaleźć źródło problemu, który może różnić się w twojej instalacji: https://github.com/msysgit/msysgit/wiki/Diagnosing-why-Git-is-so- powolny
źródło
Prawdopodobnie jest to kwestia monitu, który analizuje repozytorium Git. Możesz przetestować, wykonując „czyszczenie” gdzieś poza repozytorium Git. Możesz go przyspieszyć, łatając git-complete.bash lub wykonując sztuczki z core.filemode.
Jeśli chodzi o integrację z Visual Studio: to jest Open Source. Oczekiwanie, że inni będą pracować dla Ciebie za darmo, jest niesprawiedliwe.
Uważam też go raczej śmieszne nie zadać pytanie na liście mailingowej msysgit, ale teraz mogę błądzić.
źródło