为什么 Windows 上的 git diff 警告说“终端功能不全”?

我在 Windows 上使用 Msysgit 1.7.7.1。使用 git diff时出错。是什么引起的?是否有不同的工具包含在 msysgit?我该怎么办?

警告: 终端功能不全

30542 次浏览

The answer can be found 这里, in which the author of the solution claims that:

环境变量设置为 dumb

而不是

TERM=cygwin

你可以改成

TERM=msys

解决手头的问题。

对于 Git Bash,可以通过将以下代码行添加到 ~/. bashrc 来修复这个问题:

export TERM=cygwin

或者

export TERM=msys

第一个似乎是原来的 git 为窗口,第二个流行的已知形式“愈合”以及。

如果其他程序(例如 草莓 Perl)设置 TERM系统环境变量,则可能导致问题。

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

以上的答案对我来说并不完全奏效,所以我做到了: 加

export TERM=msys

到顶部的“ [githome]/etc/profile”,但它只对 git bash 进行了更改。然后我添加了

@set TERM=msys

到@setlocal 之后的“ [ githome ]/cmd/git.cmd”(我只从命令行安装了 git run)。也许这个决定不是真正的好,但它为我工作,并没有任何终端警告。(我使用 git 版本1.7.10。Msysgit 1).

我在 powershell 中工作,并且在我的路径中直接有 git 可执行文件。

None of the suggested answers worked, but I found a solution that works for me.

我在 Powershell 配置文件中添加了一行:

$env:TERM="msys"

解决了我的问题。

If you are having issues in cmd.exe, for instance, see the warning here:

CMD.EXE without the TERM set correctly

然后简单地设置您的环境变量并包含 TERM = msys。之后,每次打开 cmd.exe 时,您的变量将被正确设置。

How to set your TERM environment variable

现在您必须重新启动您的 SHELL (CMDEXE)。运行一个新的。从那以后,你就不会有任何问题了。再说一遍:

CMD.EXE with the correct TERM set

In case someone gets this launching bash from Git Extensions, check the setting for Path to linux tools.... Mine was set to C:\cygwin. Changing it to C:\Program Files (x86)\Git\bin\ fixed it for me. I didn't have to set the TERM variable to launch bash this way.

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

默认情况下,一些 git 命令(如 log)如果希望输出很长,就会使用像 less这样的寻呼机。寻呼机需要使用箭头键上下滚动文本,如果关于您所在的终端类型的假设是错误的(这就是“不完全功能”的意思) ,那么这种方法有时不起作用。

如果你提前知道你的输出会很短,或者你只是想让它把输出转储到终端,把滚动留给你的终端程序,你可以覆盖这一点而不用寻呼机,例如:

git --no-pager log