2010-10-13 11 views
40

Mam Git dla instalacji systemu Windows (msysGit) i to działa dobrze przez ostatnie kilka dni, a dzisiaj mam napotkał dziwny błąd.Prompt Git poleceń systemu Windows utknie podczas Git poleceń z (Koniec)

Podczas wydawania polecenia Git w wierszu polecenia systemu Windows lub w Git Bash dołączonym do msysgit pojawia się dziwna linia "(END)", a następnie nie mogę wydać żadnych innych komunikatów.

alt text

W tym momencie wszystko otrzymuję są sygnały systemowe.

Wszelkie pomysły?

Dzięki, P.

Odpowiedz

68

Git chcą pokazać więcej niż jeden ekran informacji do ciebie, aby zrobić to zadzwonić do standardowego uniksowego programu pagera less. Wystarczy wpisać q, aby powrócić do wiersza, gdy nie chcesz, aby poruszać się po wyjściu.

  • j ruch jeden wiersz w dół
  • k przenieść jedną linię w górę
  • <przestrzeni> przenieść jedną stronę w dół
  • b ruch jedna strona się
  • h pokazać pomoc

Jeśli chcesz efektywnie używać gita, powinieneś nauczyć się podstawowych narzędzi unixowych. Nawet jeśli git jest budowany i uruchamiany w systemie Windows, to jest to obce oprogramowanie na platformie.

Jeśli nie chcesz less tylko zastąpić go innym pager w konfiguracji. Jeśli nie chcesz, pager w ogóle po prostu użyć cat:

git config --global --add core.pager cat 
+0

Dzięki za dodatkowe informacje. – paperclip

+3

+1 Do zamiany 'less' na' cat'. Nie, żebym kiedykolwiek chciał to zrobić! – Skilldrick

+0

Można również użyć 'more' zamiast' less'. – dave1010

11

Prasa q, aby wyjść z pager (co jest less w git domyślnie).

+0

Czy można temu zapobiec? – paperclip

+2

@paperclip Dlaczego chcesz? Wkrótce będziesz musiał przeglądać wyniki - dopiero teraz, gdy zaczynasz, otrzymujesz tylko jedną stronę. Wystarczy przyzwyczaić się do naciśnięcia 'q'. – Skilldrick

+0

Dzięki za cynk. – paperclip

9

raz pierwszy natknąłem się na to pytanie, gdy szukałem tej samej rzeczy; aby nie musieć wychodzić z polecenia dziennika. Odkąd znalazłem odpowiedź, którą lubię, więc mimo, że jest dobrze po oryginalnym pytaniu, dodam tę odpowiedź, aby zapewnić dodatkowe rozwiązanie, którego nie znalazłem szybko w moich własnych poszukiwaniach.

Inni stwierdzili, dlaczego obecny jest (END) - wyniki są przesyłane przez pager, który można skonfigurować dla innego pagera.

Jednakże, czasami nie chcą go zatrzymać w ogóle; ponieważ określiłem inne opcje ograniczające. Zauważyłem, że dla tego git has a global option--no-pager można wyłączyć dowolny pager zdefiniowany w pliku konfiguracyjnym.

Ta opcja globalna jest na samej komendzie git, jest dostępny dla wszystkich podpoleceń i jest umieszczony przed komendy jak ten:

git --no-pager log 
+0

Pomocna uwaga. Dzięki. – paperclip

1

Git używa „pager” o nazwie less, który pozwala na przewijanie dzięki dużej ilości wyników programu łatwo. Jednak domyślne ustawienia Git dla Windows wydają się być następujące: utrzymują działanie pagera, nawet jeśli jest mniej niż jeden ekran wyjściowy.

Oto domyślne ustawienie miałem wcześniej, co zawsze pokaże (END) i czekać, aby trafić q przed powrotem do swojej wierszu:

$ git config --get core.pager 
less -+F 

Można zmienić zachowanie tak, że less będzie tylko kontynuuj działanie (i przejmuj kontrolę nad klawiaturą), gdy jest więcej niż ekran wyjściowy, zmieniając opcję na -F zamiast na -+F.

Fix brzydkie pager z

$ git config --global core.pager "less -F" 

(Składnia -+X opcja dla mniej jest udokumentowana zresetować opcję na swoim „default” -X, mimo że nie jest to zachowanie zaobserwowałem z -+F od usuwania opcja w sumie była równoważna z -F, a nie -+F.)

Powiązane problemy