无法在 Windows 上使用 Cygwin 启动 Git GUI

我曾经在我的 Cygwin 控制台中启动 Git GUI时没有任何问题,但是自从我更新了 Cygwin 之后,我得到了以下错误消息:

$ git gui
Application initialization failed: no display name and no $DISPLAY environment variable
Error in startup script: invalid command name "tk_messageBox"
while executing
"tk_messageBox  -icon error  -type ok  -title "git-gui: fatal error"  -message $err"
invoked from within
"if {[catch {package require Tcl 8.4} err]
|| [catch {package require Tk  8.4} err]
} {
catch {wm withdraw .}
tk_messageBox \
-icon error \
-typ..."
(file "/usr/lib/git-core/git-gui" line 34)

我该怎么解决这个问题?

48342 次浏览

Cygwin 的 gitk 和 Git GUI 需要 X11。这意味着您需要安装一些 Cygwin X11包,并将其设置为能够打开 GUI。

这个应该可以让你重新开始工作:

  1. 再次运行 Cygwin 安装程序(如果需要,再次下载相关的 Setup-* . exe)。
  2. 在软件包列表中,选择在 X11类别下安装“ xinit”。单击下一步,接受所有依赖项,然后安装。
  3. 在 Windows 开始菜单中,应该有一个新的组: Cygwin-X。从那里运行 XWin 服务器。
  4. 在 Cygwin shell 中运行 export DISPLAY=:0.0

每次重新启动计算机时都需要重复步骤3,每次打开新的 Cygwin shell 时都需要重复步骤4(或者只需运行 echo "export DISPLAY=:0.0" >>~/.profile,以便在创建新 shell 时自动运行它)。

在评论中,似乎有些人得到了“无法连接到显示“ : 0.0””的错误信息。如果你得到了,鼠标在 X 应该已经出现在你的系统托盘(你可能需要点击小向上图标,如果 X 图标已经隐藏) ; 弹出式标题应该说类似“ Cygwin/X 服务器: 1.0”。在步骤4中使用“ : 1.0”(或者您看到的任何内容)作为 DISPLAY的值,而不是“ : 0.0”,确保包含冒号。

如果您在启动 X 服务器时遇到任何其他问题,您可能会发现有一个名为 ~/.xsession-errors的文件; 查看其中的内容以了解出了什么问题。还要检查您是否有一个 ~/.startxwinrc文件,并尝试删除它,看看是否修复了问题。

对于感兴趣的人来说,X11软件包之所以没有自动安装是因为它们是 技术上不需要: 在安装“ xinit”软件包时,可以通过一些复杂的方法使用不同于 Cygwin 安装的 X11服务器。

echo "export DISPLAY=:0.0" >>~/.profile

或者

echo "export DISPLAY=:0.0" >>~/.bash_profile

对我来说

避免使用 X11并为 Cygwin 添加 Git GUI 支持

如果你想避开 X11(谁不想呢?) :

  1. 为 Windows (非 cygwin)安装 Git
  2. 打开它的命令 shell C:\Program Files (x86)\Git\Git Bash
  3. 运行 git gui

(可选) 如果你想留在 Cygwin 启动 Git GUI,在你的 ~/.bashrc中添加一个函数。唯一需要注意的是,由于递归和参数混淆,不要将函数命名为 git,而且您是 Windows shell 的 Git,这一事实也可能在函数启动时添加相同的函数。您还可能遇到路径问题,因此在正确设置路径时要小心。

# Call Git GUI from Git For Windows path with `ggui`
gg() {
command "/cygdrive/c/Program Files (x86)/Git/bin/git" gui  2>/dev/null;




}

编辑完.bashrc 后,刷新设置:

source ~./bashrc

然后简单地说:

gg

在花费了比我愿意承认的更多的时间之后,我设法找到了一个在 Cygwin shell 中执行 gitk的工作解决方案。我无法得到任何关于启动 X 服务器可靠工作的指令,最后,解决方案非常简单。

最大的警告是需要安装 Git for Windows,下载可以找到 给你

现在是运行 gitk的部分。Git for windows 包含一个 cmd 文件夹,它有一个 gitk.cmd windows 命令文件。这就是打开 gitk所需要的全部内容。

$ [path-to-git]/cmd/gitk.cmd

在我的系统中,Git 路径位于“ C: Program Files (x86) Git”中,所以命令应该是这样的:

$ "/cygdrive/c/Program Files (x86)/Git/cmd/gitk.cmd"

在我的 ~/. bash _ profile文件中,我添加了一个函数来处理这个调用,如下所示:

gitk() {
"/cygdrive/c/Program Files (x86)/Git/cmd/gitk.cmd"
}

在遵循给定的 被我和滴答36的四个步骤之后,在启动 XwinServer 之后,您可能仍然会遇到 XWin 问题。

原因是它依赖于 Cygwin 终端/控制台,即主机,如果没有 Cygwin 控制台,Xwin 就会死亡。

解决办法是:

启动 Cygwin 控制台(您可以通过将 mintty命令放入 Cygwin 主目录下的文件 .startxwinrc中来使其自动启动)。

以下是对我有效的方法:

cat >> ~/.bash_profile <<< "export DISPLAY=:0.0"

通过 Cygwin 软件包管理器,执行以下操作:

安装 xorg-server和一些 xorg 字体,特别是 xorg-x11-fonts-Type1

接下来,创建一个指向 Git GUI 要使用的 Windows 字体文件夹的链接:

ln -s /cygdrive/c/Windows/Fonts /usr/share/fonts/win-fonts

关闭 Cygwin 终端并再次打开,然后键入

startxwin &> /dev/null &


git gui &

基于 Andrew D 的回答: 不要使用 Cygwin 的 git,而是使用 Windows Git 的 gitkgit gui。换句话说,从 Cygwin 卸载 git-gui 和 gitk 包(如果已安装)。然后 which gitk应该指向 Windows 文件,而不是 /usr/bin中的 Cygwin 二进制文件。