Чому git diff у Windows попереджає про те, що "термінал не працює повністю"?


111

Я використовую msysgit 1.7.7.1 для Windows. Я отримую помилку під час використання git diff. Що це викликає? Чи не включений у msysgit інструмент різниці? Що я повинен зробити?

УВАГА: термінал не працює повністю


1
Імовірне рішення: kizzx2.com/blog/index.php/2009/01/07/…
Mr_Spock

Гаразд, добре, що msysgit використовує git, це начебто в назві. Тож я дотримувався цього з msys як термін, і це спрацювало! Розмістіть пояснення у добре відформатованій відповіді, щоб я міг нагородити вас деяким представником!
Порталякер

в powerhell run: $ env: Term = "xterm"
Антон Сорадой

Відповіді:


62

Для Git Bash це можна виправити, додавши наступний рядок до ~ / .bashrc:

export TERM=cygwin

або

export TERM=msys

Перший, здається, оригінал - git для windows, другий - також відома форма «оздоровлення».

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

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


Так, але такого дерева не існує в дереві файлів для git. Інша відповідь спрацювала і мала сенс.
Порталякер

1
@Portaljacker - Що ти думаєш, працював? Закрийте git bash, знову відкрийте і подивіться, чи працює він ще?
manojlds

4
Так, у вікнах, які встановлюють змінну середовища за допомогою набору або GUI (розширені налаштування, як показано в іншій відповіді), це шлях.
cgp

11
Ця відповідь незадовільна, оскільки ОП не сказала, що він використовує bash, і немає ніякої вимоги, щоб git запускався з bash. Особисто я використовую командний рядок Windows, і я хочу рішення, яке працює для цього середовища.
Девід Грейсон

7
@DavidGrayson Thread necro, я знаю, але ви можете зробити те ж саме в командному рядку Windows, використовуючи setx TERM msys. SETX(на відміну від просто SET) пише змінну env до реєстру.
rossipedia

184

Наприклад, якщо у вас є проблеми з cmd.exe, див. Попередження тут:

CMD.EXE без терміна встановлено правильно

Потім просто встановіть змінні середовища та додайте TERM = msys. Після цього, кожного разу, коли ви відкриєте cmd.exe, ваша змінна буде встановлена ​​правильно.

Як встановити змінну середовища TERM

ЗАРАЗ ВАМ ПОВИНЕН ЗНОВИТИ СВОЮ ШАЛУ (CMD.EXE). Просто запустіть новий. І звідти у вас більше не повинно бути питань. Знову:

CMD.EXE з правильним набором TERM


Так, це точно. Я на вісті, і це повністю вирішило. Спасибі телебач!
J Cole Morrison

2
Будь-яка ідея, звідки виникла ця проблема або що означає це повідомлення ?
Ентоні Мастрен

7
@AnthonyMastrean означає, що термінал не підтримує запис у різні місця у вікні терміналу. Git diff хоче написати у всьому вікні, наприклад, написати наступний скріншот, не роблячи мільйона зворотних просторів, щоб кожен раз клацнути курсор у потрібне місце.
jwg

Оскільки програми не змінені, реальна проблема - це не термінальна підтримка, але git (рівно менше) нерозумно іншою програмою, яка визначає змінну TERM як основний термін, як вказує @manojlds.
albfan

2
Якщо ви використовуєте Vagrant, це виправлення спричиняє проблеми з оболонкою bash. Наприклад, nano більше не працюватиме, даючи помилку: 'msys': невідомий тип терміналу
Sirrah

16

Наведені вище відповіді не повністю працювали для мене, тому я зробив: Додати

export TERM=msys 

до " [githome] / etc / profile " вгорі, але зміни внесені лише для git bash. Потім я додав

@set TERM=msys

до " [githome] /cmd/git.cmd " після @setlocal (я встановив лише git run з командного рядка). Це рішення може бути не дуже хорошим, але воно працює для мене, і термінальних попереджень немає. (Я використовую git версії 1.7.10.msysgit.1).


2
Для Windows мені просто потрібно було встановити змінну середовища TERM на msys, що можна зробити за допомогою SETX.
cgp

14

Відповідь можна знайти тут , де автор рішення стверджує, що:

змінна середовища TERMбула встановлена ​​наdumb

це було замість

TERM=cygwin

Ви можете змінити це на

TERM=msys

щоб вирішити проблему під рукою.


Виявляється, ця відповідь працює лише для поточної сесії gitbash, довелося змінити її на іншу відповідь.
Порталякер

6

Я працюю в powershell і маю виконуваний git прямо на своєму шляху.

Жодна із запропонованих відповідей не спрацювала, але я знайшов рішення, яке працює для мене.

Я додав рядок у своєму профілі повноважень:

$env:TERM="msys"

Що вирішило для мене проблему.


Це, здається, вже не є проблемою для мене за допомогою git версії 1.7.11.msysgit.1 Мені вдалося видалити $ env: TERM = "msys" і повторно ввімкнути розширення кольору в меркуріальному без проблем.
Джон Велдон

Конфлікт з іншими програмами, які використовують різні термінали, є причиною, за якою слід слідувати відповіді manojlds і встановити TERM у власному .bashrc Git Bash, а не змінювати тут змінну середовища, що вплине на всі програми.
jwg

1
@jwg хороший момент, але я використовую git весь час, і я віддаю перевагу powerhell bash, тому необхідність запускати bash, щоб отримати кольоровий вихід, для мене було надмірно невдалим.
Джон Уелдон

Я додав це до файлу cmder profile..ps1 замість мого загального профілю.
gerrard00

6

Швидке та брудне рішення у моєму випадку виявилось у використанні цього --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 таким чином.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.