web-dev-qa-db-fra.com

Pourquoi git diff sur Windows avertit-il que le "terminal n'est pas entièrement fonctionnel"?

J'utilise msysgit 1.7.7.1 sous Windows. Je reçois une erreur lors de l'utilisation de git diff. Qu'est-ce qui cause cela? N'y a-t-il pas d'outil diff inclus dans msysgit? Que devrais-je faire?

AVERTISSEMENT: le terminal n'est pas entièrement fonctionnel

110
Portaljacker

Pour Git Bash, cela peut être corrigé en ajoutant la ligne suivante à ~/.bashrc:

export TERM=cygwin

-ou-

export TERM=msys

Le premier semble être l'original de git pour Windows, le second une forme connue et populaire pour "guérir" également.

Le problème peut être provoqué si un autre programme (comme par exemple Strawberry Perl ) définit les variables d'environnement système TERM.

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

59
manojlds

Si vous rencontrez des problèmes dans cmd.exe, par exemple, consultez l'avertissement ici:

CMD.EXE without the TERM set correctly

Ensuite, définissez simplement vos variables d'environnement et incluez TERM = msys. Après cela, chaque fois que vous ouvrez un cmd.exe, votre variable sera définie correctement.

How to set your TERM environment variable

MAINTENANT, VOUS DEVEZ REDÉMARRER VOTRE Shell (CMD.EXE). Exécutez-en un nouveau. Et à partir de là, vous ne devriez plus avoir de problèmes. Encore:

CMD.EXE with the correct TERM set

184
teleball

Les réponses ci-dessus n'ont pas été entièrement fonctionnelles pour moi, alors j'ai fait: Ajouter

export TERM=msys 

à "[githome]/etc/profile" en haut mais il n'a fait des changements que pour git bash. J'ai ensuite ajouté

@set TERM=msys

à "[githome] /cmd/git.cmd" après @setlocal (j'ai installé seulement git run à partir de la ligne de commande). Cette décision n'est peut-être pas vraiment bonne, mais elle fonctionne pour moi et il n'y a pas d'avertissements terminaux. (J'utilise la version 1.7.10.msysgit.1 de git).

16
Anatoly R

La réponse peut être trouvée ici , dans laquelle l'auteur de la solution affirme que:

la variable d'environnement TERM a été définie sur dumb

c'était au lieu de

TERM=cygwin

Vous pouvez changer cela en

TERM=msys

pour résoudre le problème actuel.

14
Mr_Spock

Je travaille en PowerShell et j'ai l'exécutable git directement sur mon chemin.

Aucune des réponses suggérées n'a fonctionné, mais j'ai trouvé une solution qui fonctionne pour moi.

J'ai ajouté une ligne dans mon profil PowerShell:

$env:TERM="msys"

Ce qui a résolu le problème pour moi.

6
John Weldon

Une solution rapide et sale dans mon cas s'est avérée être d'utiliser le --no-pager option.

Par défaut, certaines commandes git (comme log) utiliseront un pager comme less si elles s'attendent à ce que la sortie soit longue. Les téléavertisseurs nécessitent des choses comme faire défiler le texte vers le haut et vers le bas avec les touches fléchées, ce qui parfois ne fonctionne pas si les hypothèses sur le type de terminal sur lequel vous vous trouvez sont erronées (c'est ce que signifie le "pas entièrement fonctionnel").

Si vous savez à l'avance que votre sortie sera courte, ou si vous voulez simplement la transférer vers le terminal et laisser le défilement jusqu'à votre programme de terminal, vous pouvez ignorer cela et ne pas utiliser de téléavertisseur du tout, par exemple:

git --no-pager log
4
Felix

Si quelqu'un obtient ce bash de lancement de Git Extensions, vérifiez le paramètre pour Path to linux tools.... Le mien était réglé sur C:\cygwin. Le changer en C:\Program Files (x86)\Git\bin\ l'a corrigé pour moi. Je n'ai pas eu à définir la variable TERM pour lancer bash de cette façon.

0
Clay