Почему git diff в Windows предупреждает, что «терминал не работает полностью»?
111
Я использую msysgit 1.7.7.1 в Windows. Я получаю ошибку при использовании git diff. Чем это вызвано? В msysgit нет инструмента сравнения? Что я должен делать?
Хорошо, msysgit использует git, это вроде как в названии. Итак, я использовал термин msys в качестве термина, и это сработало! Опубликуйте объяснение в виде хорошо отформатированного ответа, чтобы я мог наградить вас репутацией!
Portaljacker
в powershell run: $ env: Term = "xterm"
Антон Сорадой
Ответы:
62
Для Git Bash это можно исправить, добавив следующую строку в ~ / .bashrc:
export TERM=cygwin
-или-
export TERM=msys
Первый кажется оригинальным от git для Windows, второй также является популярной известной формой «исцеления».
Проблема может возникнуть, если какая-то другая программа (например, Strawberry Perl ) устанавливает TERMпеременные системного окружения.
Да, но такого файла нет в дереве файлов для git. Другой ответ сработал и имел смысл.
Portaljacker
1
@Portaljacker - Что значит сработало? Закройте git bash, откройте снова и посмотрите, работает ли он по-прежнему?
Manojlds
4
Да, в Windows установка переменной среды с помощью набора или графического интерфейса (расширенные настройки, как показано в другом ответе) - это путь.
cgp 09
11
Этот ответ неудовлетворителен, потому что OP не сказал, что он использует bash, и нет требования, чтобы git запускался из bash. Лично я использую командную строку Windows, и мне нужно решение, которое работает в этой среде.
Дэвид Грейсон,
7
@DavidGrayson Thread necro, я знаю, но вы можете сделать то же самое в командной строке Windows, используя setx TERM msys. SETX(в отличие от просто SET) записывает переменную env в реестр.
rossipedia
184
Если у вас возникли проблемы, например, с cmd.exe, см. Предупреждение здесь:
Затем просто установите переменные среды и включите TERM = msys. После этого каждый раз, когда вы открываете cmd.exe, ваша переменная будет устанавливаться правильно.
ТЕПЕРЬ ВЫ ДОЛЖНЫ ПЕРЕЗАГРУЗИТЬ СВОЮ ОБОЛОЧКУ (CMD.EXE). Просто запустите новый. И оттуда у вас больше не должно быть проблем. Очередной раз:
Да, это определенно так. Я нахожусь в перспективе, и это полностью решило проблему. Спасибо телеболу!
J Cole Morrison,
2
Есть идеи, откуда взялась эта проблема или что означает это сообщение ?
Энтони Мастрян
7
@AnthonyMastrean означает, что терминал не поддерживает запись в разные места в окне терминала. Git diff хочет писать по всему окну, например, чтобы написать следующий экран, не делая миллион обратных пробелов, чтобы каждый раз помещать курсор в нужное место.
jwg 03
Поскольку программы не меняются, настоящая проблема заключается не в поддержке терминала, это git (ровно меньше) было глупо со стороны другой программы, которая определяет переменную TERM как некий базовый термин, как указывает @manojlds.
albfan
2
Если вы используете Vagrant, это исправление вызывает проблемы с оболочкой bash. Например, nano больше не будет работать, выдает ошибку: 'msys': неизвестный тип терминала
Сирра,
16
Вышеуказанные ответы не были полностью сработаны для меня, поэтому я сделал: Добавить
export TERM=msys
на " [githome] / etc / profile " вверху, но он внес изменения только для git bash. Затем я добавил
@set TERM=msys
на " [githome] /cmd/git.cmd " после @setlocal (я установил только git, запускаемый из командной строки). Возможно, это решение не совсем хорошее, но у меня оно работает и предупреждений о терминалах нет. (Я использую git версии 1.7.10.msysgit.1).
Это больше не кажется мне проблемой при использовании git версии 1.7.11.msysgit.1. Мне удалось удалить $ env: TERM = "msys" и повторно включить расширение цвета в mercurial без проблем.
Джон Велдон
Конфликт с другими приложениями, которые используют другие терминалы, является причиной, по которой вы должны следовать ответу manojlds и установить TERM в собственном .bashrc Git Bash, а не изменять здесь переменную среды, что повлияет на все программы.
jwg 03
1
@jwg - хороший аргумент, но я все время использую git и предпочитаю powershell bash, поэтому необходимость запускать bash только для получения цветного вывода была для меня излишней.
Джон Уэлдон
Я добавил это в свой файл cmder profile..ps1 вместо общего профиля PowerShell.
gerrard00 06
6
Быстрое и грязное решение в моем случае оказалось использование этой --no-pagerопции.
По умолчанию некоторые команды git (например, log) будут использовать пейджер, например, lessесли они ожидают, что вывод будет длинным. Для пейджеров требуются такие вещи, как прокрутка текста вверх и вниз с помощью клавиш со стрелками, что иногда не работает, если предположения о том, какой терминал вы используете, неверны (это то, что означает «не полностью функциональный»).
Если вы заранее знаете, что ваш вывод будет коротким, или вы просто хотите, чтобы он выводил вывод на терминал и оставил прокрутку до вашей программы терминала, вы можете переопределить это и вообще не использовать пейджер, например:
Если кто-то получит этот запускающий bash из Git Extensions, проверьте настройку для Path to linux tools.... Мой был установлен на C:\cygwin. Изменил его на C:\Program Files (x86)\Git\bin\исправленный для меня. Мне не нужно было устанавливать переменную TERM для запуска bash таким образом.
Ответы:
Для Git Bash это можно исправить, добавив следующую строку в ~ / .bashrc:
-или-
Первый кажется оригинальным от git для Windows, второй также является популярной известной формой «исцеления».
Проблема может возникнуть, если какая-то другая программа (например, Strawberry Perl ) устанавливает
TERM
переменные системного окружения.http://code.google.com/p/msysgit/issues/detail?id=184
источник
setx TERM msys
.SETX
(в отличие от просто SET) записывает переменную env в реестр.Если у вас возникли проблемы, например, с cmd.exe, см. Предупреждение здесь:
Затем просто установите переменные среды и включите TERM = msys. После этого каждый раз, когда вы открываете cmd.exe, ваша переменная будет устанавливаться правильно.
ТЕПЕРЬ ВЫ ДОЛЖНЫ ПЕРЕЗАГРУЗИТЬ СВОЮ ОБОЛОЧКУ (CMD.EXE). Просто запустите новый. И оттуда у вас больше не должно быть проблем. Очередной раз:
источник
Вышеуказанные ответы не были полностью сработаны для меня, поэтому я сделал: Добавить
на " [githome] / etc / profile " вверху, но он внес изменения только для git bash. Затем я добавил
на " [githome] /cmd/git.cmd " после @setlocal (я установил только git, запускаемый из командной строки). Возможно, это решение не совсем хорошее, но у меня оно работает и предупреждений о терминалах нет. (Я использую git версии 1.7.10.msysgit.1).
источник
Ответ можно найти здесь , в котором автор решения утверждает, что:
это было вместо
Вы можете изменить это на
чтобы решить возникшую проблему.
источник
Я работаю в PowerShell, и у меня есть исполняемый файл git прямо на моем пути.
Ни один из предложенных ответов не помог, но я нашел решение, которое мне подходит.
Я добавил строку в свой профиль PowerShell:
Что устранило проблему для меня.
источник
Быстрое и грязное решение в моем случае оказалось использование этой
--no-pager
опции.По умолчанию некоторые команды git (например,
log
) будут использовать пейджер, например,less
если они ожидают, что вывод будет длинным. Для пейджеров требуются такие вещи, как прокрутка текста вверх и вниз с помощью клавиш со стрелками, что иногда не работает, если предположения о том, какой терминал вы используете, неверны (это то, что означает «не полностью функциональный»).Если вы заранее знаете, что ваш вывод будет коротким, или вы просто хотите, чтобы он выводил вывод на терминал и оставил прокрутку до вашей программы терминала, вы можете переопределить это и вообще не использовать пейджер, например:
источник
Если кто-то получит этот запускающий bash из Git Extensions, проверьте настройку для
Path to linux tools...
. Мой был установлен наC:\cygwin
. Изменил его наC:\Program Files (x86)\Git\bin\
исправленный для меня. Мне не нужно было устанавливать переменную TERM для запуска bash таким образом.источник