【问题标题】:Why does git diff on Windows warn that the "terminal is not fully functional"?为什么 Windows 上的 git diff 会警告“终端功能不全”?
【发布时间】:2011-10-31 04:14:07
【问题描述】:

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

警告:终端功能不完整

【问题讨论】:

  • 一个可能的解决方案:kizzx2.com/blog/index.php/2009/01/07/…
  • 好的,msysgit 使用 git,它的名字有点像。所以我用 msys 作为术语,它起作用了!以格式正确的答案发布解释,以便我可以奖励您一些代表!
  • 在 powershell 中运行:$env:Term="xterm"

标签: windows git diff msysgit


【解决方案1】:

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

然后只需设置您的环境变量并包含 TERM=msys。之后,每次你打开一个 cmd.exe,你的变量都会被正确设置。

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

【讨论】:

  • 是的,这绝对是。我在vista上,这完全解决了它。谢谢电话!
  • 知道这个问题来自哪里或这条消息意味着什么
  • @AnthonyMastrean 表示终端不支持写入终端窗口中的不同位置。 Git diff 想要在整个窗口上写,例如写下一个屏幕,而不是每次都做一百万个退格来让光标在正确的位置。
  • 由于程序没有改变,真正的问题不是终端支持,正如@manojlds 指出的那样,其他将 TERM 变量定义为一些基本术语的程序是 git(确切地说更少)。
  • 如果您使用 Vagrant,此修复会导致 bash shell 出现问题。例如。 nano 将不再工作,出现错误:'msys': unknown terminal type
【解决方案2】:

对于 Git Bash,可以通过将以下行添加到 ~/.bashrc 来解决此问题:

export TERM=cygwin

-或-

export TERM=msys

第一个似乎是 git for windows 的原始版本,第二个也是流行的“治愈”形式。

如果某些其他程序(例如 Strawberry Perl)设置了TERM 系统环境变量,则可能会导致该问题。

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

【讨论】:

  • 是的,但是 git 的文件树中不存在这样的文件。另一个答案有效且有意义。
  • @Portaljacker - 你是什么意思工作?关闭git bash,再打开看看还能不能用?
  • 是的,在 Windows 中通过 set 或 GUI 设置环境变量(高级设置如另一个答案所示)是要走的路。
  • 这个答案令人不满意,因为 OP 没有说他正在使用 bash,并且没有要求 git 必须从 bash 运行。我个人使用 windows 命令提示符,我想要一个适用于该环境的解决方案。
  • @DavidGrayson 线程坏死,我知道,但您可以在 Windows 命令提示符中使用setx TERM msys 执行相同操作。 SETX(而不仅仅是 SET)将 env 变量写入注册表。
【解决方案3】:

以上答案对我来说并不完全有效,所以我做了: 添加

export TERM=msys 

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

@set TERM=msys

@setlocal 之后的“[githome]/cmd/git.cmd”(我只从命令行安装了 git run)。可能这个决定不是很好,但它对我有用,并且没有任何终端警告。 (我使用 git 版本 1.7.10.msysgit.1)。

【讨论】:

  • 对于windows,我只需要将环境变量TERM设置为msys,可以通过SETX来完成。
【解决方案4】:

答案可以在here找到,其中解决方案的作者声称:

环境变量TERM被设置为dumb

那不是

TERM=cygwin

你可以改成

TERM=msys

解决手头的问题。

【讨论】:

  • 原来这个答案只适用于当前的 gitbash 会话,必须将其更改为其他答案。
【解决方案5】:

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

建议的答案均无效,但我找到了适合我的解决方案。

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

$env:TERM="msys"

这为我解决了问题。

【讨论】:

  • 这对我来说似乎不再是问题,使用 git 版本 1.7.11.msysgit.1 我能够删除 $env:TERM="msys" 并重新启用mercurial 中的颜色扩展没有问题。
  • 与使用不同终端的其他应用程序的冲突是您应该遵循manojlds的回答并在Git Bash自己的.bashrc中设置TERM而不是在这里更改环境变量的原因,这将影响所有程序。
  • @jwg 好点,但我一直在使用 git,我更喜欢 powershell 而不是 bash,所以必须运行 bash 来获得颜色输出对我来说太过分了。
  • 我将此添加到我的 cmder profile..ps1 文件中,而不是我的常规 powershell 配置文件中。
【解决方案6】:

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

默认情况下,如果某些 git 命令(如 log)希望输出很长,则会使用像 less 这样的寻呼机。寻呼机需要诸如使用箭头键上下滚动文本之类的操作,如果对您使用的终端类型的假设是错误的(这就是“功能不全”的意思),这有时不起作用。

如果您提前知道您的输出会很短,或者您只是希望它将输出转储到终端并让滚动到您的终端程序,您可以覆盖它并且根本不使用寻呼机,例如:

git --no-pager log

【讨论】:

    【解决方案7】:

    如果有人从 Git Extensions 获得此启动 bash,请检查 Path to linux tools... 的设置。我的设置为C:\cygwin。将其更改为 C:\Program Files (x86)\Git\bin\ 为我修复了它。我不必设置 TERM 变量来以这种方式启动 bash。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-22
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 2010-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多