为什么Windows上的git diff会提示“terminalfunction不全”?

我在Windows上使用msysgit 1.7.7.1 。 使用git diff时出错。 这是什么原因造成的? msysgit中是否包含diff工具? 我该怎么办?

警告:端子function不全

对于Git Bash,可以通过在〜/ .bashrc中添加以下代码来解决这个问题:

 export TERM=cygwin 

-要么-

 export TERM=msys 

第一个似乎是通过Git的原始窗口,第二个stream行的已知forms“治疗”以及。

如果其他程序(如Strawberry Perl )设置TERM系统环境variables,则可能会导致问题。

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

如果您在cmd.exe中遇到问题,请参阅此处的警告:

没有正确设置TERM的CMD.EXE

然后简单地设置你的环境variables,并包括TERM = msys。 之后,每次你打开一个cmd.exe,你的variables将被正确设置。

如何设置你的TERM环境变量

现在你必须重新启动你的shell (CMD.EXE)。 只要运行一个新的。 从那里,你应该没有更多的问题。 再次:

CMD.EXE与正确的TERM设置

以上的答案没有完全为我工作,所以我做了:添加

 export TERM=msys 

到“ [githome] / etc / profile ”在顶部,但它只改变了git bash。 然后我补充说

 @set TERM=msys 

到“ [githome] /cmd/git.cmd ”后@setlocal(我只安装git从命令行运行)。 可能是这个决定不是真的好,但它适用于我,没有任何terminal警告。 (我使用git版本1.7.10.msysgit.1)。

答案可以在这里find,其中解决scheme的作者声称:

环境variablesTERM被设置为dumb

而不是

 TERM=cygwin 

你可以改变它

 TERM=msys 

解决手头的问题。

我在PowerShell中工作,我有我的path直接在git可执行文件。

没有任何build议的答案工作,但我find了一个适合我的解决scheme。

我在PowerShellconfiguration文件中添加了一行:

 $env:TERM="msys" 

哪些问题解决了我的问题。

在我的情况下,一个快速和肮脏的解决scheme竟然是使用--no-pager选项。

默认情况下,如果希望输出很长,那么一些git命令(如log )会使用一个less的寻呼机。 寻呼机需要使用箭头键上下滚动文本,如果假设你所使用的terminaltypes是错误的(这就是“不完全function”的意思),有时这种方式是行不通的。

如果你事先知道你的输出是短路的,或者你只是想把输出信息转储到terminal上而把滚动放到你的terminal程序中,你可以覆盖它而不是使用寻呼机,例如:

 git --no-pager log 

如果有人从Git扩展中得到这个启动bash,检查Path to linux tools...的设置Path to linux tools... 我被设置为C:\cygwin 。 将其更改为C:\Program Files (x86)\Git\bin\为我解决了这个问题。 我没有必要设置TERMvariables来启动bash这种方式。