Командная строка Git Windows застревает во время выполнения команд Git (END) - PullRequest
47 голосов
/ 13 октября 2010

У меня есть программа установки Git для Windows (msysgit), и последние несколько дней она работала нормально, а сегодня я столкнулся со странной ошибкой.

При вводе команды Git в командной строке Windows или в Git Bash, поставляемом в комплекте с msysgit, появляется странная строка '(END)', и тогда я не могу выдавать какие-либо другие команды.

alt text

На данный момент все, что я получаю, это системные гудки.

Есть идеи?

Спасибо, П.

Ответы [ 4 ]

81 голосов
/ 13 октября 2010

Git хочет показать вам более одного экрана информации, для этого он вызывает стандартную программу пейджера Unix less.Просто наберите q , чтобы вернуться к подсказке, когда вы больше не хотите перемещаться по выходным данным.

  • j переместить на одну строку вниз
  • k на одну строку вверх
  • на одну страницу вниз
  • b на одну страницу вверх
  • h показать справку

Если вы хотите эффективно использовать git, вы должны изучить основные инструменты Unix.Даже если git собирается и запускается на Windows, это в значительной степени инопланетное программное обеспечение на платформе.

Если вы не хотите less, просто замените его на другой пейджер в конфигурации.Если вам не нужен пейджер, просто используйте cat:

git config --global --add core.pager cat
12 голосов
/ 13 октября 2010

Нажмите q для выхода из пейджера (по умолчанию less в git).

9 голосов
/ 01 января 2013

Я впервые столкнулся с этим вопросом, когда искал то же самое;чтобы не приходилось выходить из команды log.С тех пор я нашел ответ, который мне нравится, поэтому даже после первоначального запроса я добавлю этот ответ, чтобы предоставить дополнительное решение, которое я не нашел быстро в своем собственном поиске.

Другие заявилипочему присутствует (END) - результаты передаются через пейджер, который можно настроить для другого пейджера.

Однако иногда я не хочу, чтобы он вообще останавливался;потому что я указал другие варианты, которые делают ограничение.Я обнаружил, что для этого git имеет глобальную опцию --no-pager, чтобы отключить любой пейджер, определенный в файле конфигурации.

Эта глобальная опция есть в самой команде git,доступно для всех подкоманд и помещается перед подкомандой следующим образом:

git --no-pager log
2 голосов
/ 02 сентября 2014

Git использует «пейджер», называемый less, который позволяет легко пролистывать большое количество выходных данных программы. Однако настройки по умолчанию в Git для Windows, по-видимому, поддерживают работу пейджера, даже если выводится менее одного экрана .

Вот настройка по умолчанию, которая была у меня раньше, которая всегда будет показывать (END) и будет ждать, пока вы нажмете q, прежде чем вернуться к вашему приглашению:

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

Вы можете изменить поведение так, чтобы less продолжал работать (и получал контроль над клавиатурой) только при более чем скриншоте вывода, изменив параметр на -F вместо -+F.

Исправить надоедливый пейджер с помощью

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

(Синтаксис опции -+X для less задокументирован для сброса опции -X на ее значение по умолчанию, хотя я не наблюдал такого поведения с -+F, поскольку удаление опции в целом было эквивалентно -F не -+F.)

...