Warum warnt git diff unter Windows, dass das Terminal nicht voll funktionsfähig ist?
111
Ich verwende msysgit 1.7.7.1 unter Windows. Bei der Verwendung wird eine Fehlermeldung angezeigt git diff. Was verursacht das? Ist in msysgit kein Diff-Tool enthalten? Was soll ich machen?
WARNUNG: Das Terminal ist nicht voll funktionsfähig
Ok, nun, msysgit benutzt git, es ist irgendwie im Namen. Also folgte ich dem mit msys als Begriff und es funktionierte! Veröffentlichen Sie die Erklärung in einer gut formatierten Antwort, damit ich Ihnen einen Vertreter geben kann!
Portaljacker
im Powershell-Lauf: $ env: Term = "xterm"
Anton Soradoi
Antworten:
62
Für Git Bash kann dies behoben werden, indem die folgende Zeile zu ~ / .bashrc hinzugefügt wird:
export TERM=cygwin
-oder-
export TERM=msys
Das erste scheint das Original von Git für Windows zu sein, das zweite eine beliebte bekannte Form, um ebenfalls zu "heilen".
Das Problem kann verursacht werden, wenn ein anderes Programm (wie z. B. Strawberry Perl ) die TERMSystemumgebungsvariablen festlegt .
Ja, aber im Dateibaum für git ist keine solche Datei vorhanden. Die andere Antwort funktionierte und machte Sinn.
Portaljacker
1
@Portaljacker - Was meinst du gearbeitet? Schließen Sie die Git-Bash, öffnen Sie sie erneut und prüfen Sie, ob sie noch funktioniert.
Manojlds
4
Ja, in Windows ist die Einstellung der Umgebungsvariablen über set oder die GUI (erweiterte Einstellungen wie in der anderen Antwort gezeigt) der richtige Weg.
CGP
11
Diese Antwort ist unbefriedigend, da das OP nicht gesagt hat, dass er Bash verwendet, und es keine Anforderung gibt, dass Git von Bash ausgeführt werden muss. Persönlich verwende ich die Windows-Eingabeaufforderung und möchte eine Lösung, die für diese Umgebung funktioniert.
David Grayson
7
@DavidGrayson Thread necro, ich weiß, aber Sie können das gleiche in der Windows-Eingabeaufforderung tun, indem Sie verwenden setx TERM msys. SETX(im Gegensatz zu nur SET) schreibt die env-Variable in die Registrierung.
Wikipedia
184
Wenn Sie beispielsweise Probleme mit cmd.exe haben, lesen Sie die Warnung hier:
Stellen Sie dann einfach Ihre Umgebungsvariablen ein und geben Sie TERM = msys an. Danach wird Ihre Variable jedes Mal, wenn Sie eine cmd.exe öffnen, korrekt festgelegt.
JETZT MÜSSEN SIE IHRE SHELL (CMD.EXE) NEU STARTEN. Führen Sie einfach einen neuen aus. Und von dort sollten Sie keine Probleme mehr haben. Nochmal:
Ja, das ist definitiv so. Ich bin auf Vista, und das hat es total gelöst. Danke Teleball!
J Cole Morrison
2
Irgendeine Idee, woher dieses Problem kommt oder was diese Nachricht bedeutet ?
Anthony Mastrean
7
@AnthonyMastrean bedeutet, dass das Terminal das Schreiben an verschiedene Stellen im Terminalfenster nicht unterstützt. Git diff möchte über das gesamte Fenster schreiben, z. B. den nächsten Bildschirm schreiben, ohne eine Million Backspaces zu erstellen, um den Cursor jedes Mal an die richtige Stelle zu bringen.
JWG
Da Programme nicht geändert werden, ist das eigentliche Problem nicht die Terminalunterstützung. Es ist (genau weniger) dumm von anderen Programmen, die TERM-Variablen als einen Grundbegriff definieren, wie @manojlds betont.
Albfan
2
Wenn Sie Vagrant verwenden, verursacht dieses Update Probleme mit der Bash-Shell. ZB funktioniert Nano nicht mehr und gibt den Fehler aus: 'msys': unbekannter Terminaltyp
Sirrah
16
Die obigen Antworten haben bei mir nicht vollständig funktioniert, also habe ich Folgendes getan: Hinzufügen
export TERM=msys
zu " [githome] / etc / profile " oben, aber es wurden nur Änderungen für git bash vorgenommen. Dann habe ich hinzugefügt
@set TERM=msys
zu " [githome] /cmd/git.cmd " nach @setlocal (ich habe nur git installiert, das über die Befehlszeile ausgeführt wird). Vielleicht ist diese Entscheidung nicht wirklich gut, aber sie funktioniert für mich und es gibt keine Terminalwarnungen. (Ich benutze Git Version 1.7.10.msysgit.1).
Mit git Version 1.7.11.msysgit.1 scheint dies für mich kein Problem mehr zu sein. Ich konnte $ env: TERM = "msys" entfernen und die Farberweiterung in mercurial ohne Probleme wieder aktivieren.
John Weldon
Der Konflikt mit anderen Anwendungen, die andere Terminals verwenden, ist der Grund, warum Sie der Antwort von manojlds folgen und TERM in Git Bashs eigenem .bashrc festlegen sollten, anstatt die Umgebungsvariable hier zu ändern, was sich auf alle Programme auswirkt.
JWG
1
@jwg guter Punkt, aber ich benutze git die ganze Zeit und ich bevorzuge Powershell gegenüber Bash, also war es für mich übertrieben, Bash ausführen zu müssen, um die Farbausgabe zu erhalten.
John Weldon
Ich habe dies zu meiner cmder profile..ps1-Datei anstelle meines allgemeinen Powershell-Profils hinzugefügt.
gerrard00
6
In meinem Fall stellte sich heraus, dass eine schnelle und schmutzige Lösung darin bestand, die --no-pagerOption zu verwenden.
Standardmäßig verwenden einige Git-Befehle (wie log) einen Pager, lesswenn sie erwarten, dass die Ausgabe lang ist. Pager erfordern beispielsweise das Scrollen von Text mit den Pfeiltasten nach oben und unten, was manchmal nicht funktioniert, wenn die Annahmen darüber, auf welcher Art von Terminal Sie sich befinden, falsch sind (dies bedeutet "nicht voll funktionsfähig").
Wenn Sie im Voraus wissen, dass Ihre Ausgabe kurz sein wird, oder wenn Sie nur möchten, dass die Ausgabe an das Terminal ausgegeben wird und das Scrollen Ihrem Terminalprogramm überlassen bleibt, können Sie dies überschreiben und überhaupt keinen Pager verwenden, z.
Falls jemand diese Start-Bash von Git Extensions erhält, überprüfen Sie die Einstellung für Path to linux tools.... Meins war eingestellt auf C:\cygwin. Ändern Sie es, um C:\Program Files (x86)\Git\bin\es für mich zu beheben. Ich musste die TERM-Variable nicht festlegen, um Bash auf diese Weise zu starten.
Antworten:
Für Git Bash kann dies behoben werden, indem die folgende Zeile zu ~ / .bashrc hinzugefügt wird:
-oder-
Das erste scheint das Original von Git für Windows zu sein, das zweite eine beliebte bekannte Form, um ebenfalls zu "heilen".
Das Problem kann verursacht werden, wenn ein anderes Programm (wie z. B. Strawberry Perl ) die
TERM
Systemumgebungsvariablen festlegt .http://code.google.com/p/msysgit/issues/detail?id=184
quelle
setx TERM msys
.SETX
(im Gegensatz zu nur SET) schreibt die env-Variable in die Registrierung.Wenn Sie beispielsweise Probleme mit cmd.exe haben, lesen Sie die Warnung hier:
Stellen Sie dann einfach Ihre Umgebungsvariablen ein und geben Sie TERM = msys an. Danach wird Ihre Variable jedes Mal, wenn Sie eine cmd.exe öffnen, korrekt festgelegt.
JETZT MÜSSEN SIE IHRE SHELL (CMD.EXE) NEU STARTEN. Führen Sie einfach einen neuen aus. Und von dort sollten Sie keine Probleme mehr haben. Nochmal:
quelle
Die obigen Antworten haben bei mir nicht vollständig funktioniert, also habe ich Folgendes getan: Hinzufügen
zu " [githome] / etc / profile " oben, aber es wurden nur Änderungen für git bash vorgenommen. Dann habe ich hinzugefügt
zu " [githome] /cmd/git.cmd " nach @setlocal (ich habe nur git installiert, das über die Befehlszeile ausgeführt wird). Vielleicht ist diese Entscheidung nicht wirklich gut, aber sie funktioniert für mich und es gibt keine Terminalwarnungen. (Ich benutze Git Version 1.7.10.msysgit.1).
quelle
Die Antwort finden Sie hier , in der der Autor der Lösung behauptet, dass:
das war statt
Sie können das in ändern
das vorliegende Problem zu lösen.
quelle
Ich arbeite in Powershell und habe die ausführbare Git-Datei direkt auf meinem Weg.
Keine der vorgeschlagenen Antworten hat funktioniert, aber ich habe eine Lösung gefunden, die für mich funktioniert.
Ich habe meinem Powershell-Profil eine Zeile hinzugefügt:
Was das Problem für mich behoben hat.
quelle
In meinem Fall stellte sich heraus, dass eine schnelle und schmutzige Lösung darin bestand, die
--no-pager
Option zu verwenden.Standardmäßig verwenden einige Git-Befehle (wie
log
) einen Pager,less
wenn sie erwarten, dass die Ausgabe lang ist. Pager erfordern beispielsweise das Scrollen von Text mit den Pfeiltasten nach oben und unten, was manchmal nicht funktioniert, wenn die Annahmen darüber, auf welcher Art von Terminal Sie sich befinden, falsch sind (dies bedeutet "nicht voll funktionsfähig").Wenn Sie im Voraus wissen, dass Ihre Ausgabe kurz sein wird, oder wenn Sie nur möchten, dass die Ausgabe an das Terminal ausgegeben wird und das Scrollen Ihrem Terminalprogramm überlassen bleibt, können Sie dies überschreiben und überhaupt keinen Pager verwenden, z.
quelle
Falls jemand diese Start-Bash von Git Extensions erhält, überprüfen Sie die Einstellung für
Path to linux tools...
. Meins war eingestellt aufC:\cygwin
. Ändern Sie es, umC:\Program Files (x86)\Git\bin\
es für mich zu beheben. Ich musste die TERM-Variable nicht festlegen, um Bash auf diese Weise zu starten.quelle