Perché git diff su Windows avverte che il "terminale non è completamente funzionante"?


111

Sto usando msysgit 1.7.7.1 su Windows. Ricevo un errore durante l'utilizzo git diff. Cosa sta causando questo? Non c'è uno strumento diff incluso in msysgit? Cosa dovrei fare?

ATTENZIONE: il terminale non è completamente funzionante



Ok, beh msysgit usa git, è un po 'nel nome. Quindi l'ho seguito con msys come termine e ha funzionato! Pubblica la spiegazione in una risposta ben formattata in modo da poterti assegnare un rappresentante!
Portaljacker

in PowerShell eseguito: $ env: Term = "xterm"
Anton Soradoi,

Risposte:


62

Per Git Bash, questo può essere risolto aggiungendo la seguente riga a ~ / .bashrc:

export TERM=cygwin

-o-

export TERM=msys

Il primo sembra essere l'originale di git per windows, il secondo anche una forma nota e popolare per "curare".

Il problema può essere causato se qualche altro programma (come ad esempio Strawberry Perl ) imposta le TERMvariabili di ambiente del sistema.

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


Sì, ma nessun file di questo tipo esiste nell'albero dei file per git. L'altra risposta ha funzionato e aveva senso.
Portaljacker

1
@ Portaljacker - Cosa intendi dire ha funzionato? Chiudi git bash, aprilo di nuovo e vedi se funziona ancora?
manojlds

4
Sì, in Windows l'impostazione della variabile d'ambiente tramite set o la GUI (impostazioni avanzate come mostrato nell'altra risposta) è la strada da percorrere.
cgp

11
Questa risposta non è soddisfacente perché l'OP non ha detto che stava usando bash e non è necessario che git debba essere eseguito da bash. Personalmente utilizzo il prompt dei comandi di Windows e desidero una soluzione che funzioni per quell'ambiente.
David Grayson

7
@DavidGrayson Thread necro, lo so, ma puoi fare lo stesso nel prompt dei comandi di Windows usando setx TERM msys. SETX(al contrario del solo SET) scrive la variabile env nel registro.
rossipedia

184

Se si verificano problemi in cmd.exe, ad esempio, vedere l'avviso qui:

CMD.EXE senza il TERM impostato correttamente

Quindi imposta semplicemente le tue variabili d'ambiente e includi TERM = msys. Dopodiché, ogni volta che apri un cmd.exe, la tua variabile verrà impostata correttamente.

Come impostare la variabile d'ambiente TERM

ORA DEVI RIAVVIARE IL TUO SHELL (CMD.EXE). Basta eseguirne uno nuovo. E da lì, non dovresti avere più problemi. Ancora:

CMD.EXE con il set TERM corretto


Sì, sicuramente lo è. Sono su Vista, e questo l'ha risolto totalmente. Grazie Teleball!
J Cole Morrison

2
Qualche idea da dove viene questo problema o cosa significa questo messaggio ?
Anthony Mastrean

7
@AnthonyMastrean significa che il terminale non supporta la scrittura in posizioni diverse nella finestra del terminale. Git diff vuole scrivere in tutta la finestra, ad esempio per scrivere la schermata successiva, senza fare un milione di backspace per portare il cursore nel posto giusto ogni volta.
jwg

Poiché i programmi non vengono modificati, il vero problema non è il supporto del terminale, è git (esattamente meno) stato stupido da un altro programma che definisce la variabile TERM come un termine di base, come sottolinea @manojlds.
albfan

2
Se stai usando Vagrant, questa correzione causa problemi con la shell bash. Ad esempio nano non funzionerà più, dando errore: 'msys': tipo di terminale sconosciuto
Sirrah

16

Le risposte di cui sopra non funzionavano completamente per me, quindi ho fatto: Aggiungi

export TERM=msys 

a " [githome] / etc / profile " in alto ma ha apportato modifiche solo per git bash. Poi ho aggiunto

@set TERM=msys

a " [githome] /cmd/git.cmd " dopo @setlocal (ho installato solo git run dalla riga di comando). Potrebbe essere questa decisione non veramente buona, ma funziona per me e non ci sono avvisi di terminale. (Io uso git versione 1.7.10.msysgit.1).


2
Per Windows, avevo solo bisogno di impostare la variabile d'ambiente TERM su msys, che può essere fatto tramite SETX.
cgp

14

La risposta può essere trovata qui , in cui l'autore della soluzione afferma che:

la variabile d'ambiente è TERMstata impostata sudumb

quello era invece di

TERM=cygwin

Puoi cambiarlo in

TERM=msys

per risolvere il problema a portata di mano.


Si scopre che questa risposta funziona solo per la sessione corrente di gitbash, ho dovuto cambiarla con l'altra risposta.
Portaljacker

6

Lavoro in PowerShell e ho l'eseguibile git direttamente nel mio percorso.

Nessuna delle risposte suggerite ha funzionato, ma ho trovato una soluzione che funziona per me.

Ho aggiunto una riga nel mio profilo PowerShell:

$env:TERM="msys"

Che ha risolto il problema per me.


Questo non sembra più essere un problema per me usando git versione 1.7.11.msysgit.1 Sono stato in grado di rimuovere $ env: TERM = "msys" e riattivare l'estensione del colore in Mercurial senza problemi.
John Weldon

Il conflitto con altre applicazioni che usano terminali differenti è la ragione per cui dovresti seguire la risposta di manojlds e impostare TERM nel .bashrc di Git Bash piuttosto che cambiare la variabile d'ambiente qui, che influenzerà tutti i programmi.
jwg

1
@jwg buon punto, ma io uso sempre git e preferisco powershell a bash, quindi dover eseguire bash solo per ottenere l'output a colori è stato eccessivo per me.
John Weldon

L'ho aggiunto al mio file cmder profile..ps1 invece del mio profilo PowerShell generale.
gerrard00

6

Una soluzione rapida e sporca nel mio caso si è rivelata quella di utilizzare l' --no-pageropzione.

Per impostazione predefinita, alcuni comandi git (come log) useranno un cercapersone come lessse si aspettassero che l'output fosse lungo. I cercapersone richiedono cose come lo scorrimento del testo su e giù con i tasti freccia, che a volte non funziona se le ipotesi sul tipo di terminale su cui ti trovi sono sbagliate (questo è ciò che significa "non completamente funzionante").

Se sai in anticipo che il tuo output sarà breve, o vuoi semplicemente che esegua il dump dell'output sul terminale e lasci lo scorrimento al programma del tuo terminale, puoi sovrascriverlo e non usare affatto un cercapersone, ad esempio:

git --no-pager log

0

Nel caso in cui qualcuno ottenga questo lancio di bash da Git Extensions, controlla l'impostazione per Path to linux tools.... Il mio era impostato su C:\cygwin. Cambiandolo per C:\Program Files (x86)\Git\bin\ripararlo per me. Non ho dovuto impostare la variabile TERM per avviare bash in questo modo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.