Почему git diff в Windows предупреждает, что «терминал не полностью функционален»?

109

Я использую msysgit 1.7.7.1 в Windows. При использовании git diff я получаю сообщение об ошибке. Чем это вызвано? Нет ли средства diff, включенного в msysgit? Что мне делать?

ПРЕДУПРЕЖДЕНИЕ: терминал не работает полностью

  • 1
    Возможное решение: kizzx2.com/blog/index.php/2009/01/07/…
  • 0
    Хорошо, хорошо, msysgit использует git, это как-то в названии. Таким образом, я следовал за этим с msys как термин, и это работало! Разместите объяснение в хорошо отформатированном ответе, чтобы я мог наградить вас каким-нибудь представителем!
Показать ещё 2 комментария
Теги:
diff
msysgit

7 ответов

61
Лучший ответ

Для Git Bash это можно устранить, добавив следующую строку в ~/.bashrc:

export TERM=cygwin

-или -

export TERM=msys

Первый, по-видимому, является оригиналом Git для окон, второй - популярной известной формой для "лечения".

Проблема может быть вызвана, если какая-либо другая программа (например, Strawberry Perl) устанавливает переменные среды TERM.

http://code.google.com/p/msysgit/issues/detail?id=184

  • 0
    Да, но такого файла нет в дереве файлов для git. Другой ответ работал и имел смысл.
  • 1
    @Portaljacker - Что ты имеешь в виду работал? Закройте git bash, откройте снова и посмотрите, работает ли он до сих пор?
Показать ещё 9 комментариев
175

Если у вас есть проблемы с cmd.exe, например, см. предупреждение здесь:

Изображение 7366

Затем просто установите переменные среды и включите TERM = msys. После этого каждый раз, когда вы открываете cmd.exe, ваша переменная будет установлена ​​правильно.

Изображение 7367

ТЕПЕРЬ ВЫ ДОЛЖНЫ ОТПРАВИТЬ ВАШУ ОБОЛОЧКУ (CMD.EXE). Просто запустите новый. И оттуда у вас больше не будет проблем. Опять же:

Изображение 7368

  • 27
    Это правильный ответ для пользователей Windows.
  • 0
    Да, это определенно так. Я нахожусь на перспективу, и это полностью решило это. Спасибо, телебол!
Показать ещё 6 комментариев
16

Выше ответы не были полностью сработаны для меня, поэтому я сделал: Добавить

export TERM=msys 

до " [githome]/etc/profile" вверху, но он вносил изменения только для git bash. Затем я добавил

@set TERM=msys

to " [githome]/cmd/ git.cmd" после @setlocal (я установил только git запустите из командной строки). Может быть, это решение не очень хорошее, но оно работает для меня, и никаких предупреждений о терминах нет. (Я использую git версию 1.7.10.msysgit.1).

  • 2
    Для окон мне просто нужно было установить переменную окружения TERM на msys, что можно сделать через SETX.
14

Ответ можно найти здесь, в котором автор решения утверждает, что:

переменная среды TERM была установлена ​​на dumb

вместо

TERM=cygwin

Вы можете изменить это на

TERM=msys

чтобы решить проблему.

  • 0
    Оказывается, этот ответ работает только для текущей сессии Gitbash, пришлось изменить его на другой ответ.
  • 0
    Ааа! -15 моему представителю! лол
Показать ещё 2 комментария
6

Я работаю в powershell, и у меня есть исполняемый файл git непосредственно на моем пути.

Ни один из предложенных ответов не работал, но я нашел решение, которое работает для меня.

Я добавил строку в свой профиль powershell:

$env:TERM="msys"

Это исправило проблему для меня.

  • 0
    К сожалению, это испортило вывод командной строки hg :-p
  • 0
    ... который я исправил, отключив расширение 'color' ...
Показать ещё 4 комментария
2

Быстрое и грязное решение в моем случае оказалось для использования опции --no-pager.

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

Если вы заранее знаете, что ваш результат будет коротким, или вы просто хотите, чтобы он выгружал вывод на терминал и оставлял прокрутку до вашей программы терминала, вы можете переопределить это, а не использовать пейджер вообще, например

git --no-pager log
0

Если кто-то получит этот запуск bash из Git Extensions, проверьте настройку Path to linux tools.... Мой был установлен на C:\cygwin. Меняя его на C:\Program Files (x86)\Git\bin\, я исправил его для меня. Мне не нужно было устанавливать переменную TERM для запуска bash таким образом.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню