【问题标题】:Cannot launch Git GUI using Cygwin on Windows无法在 Windows 上使用 Cygwin 启动 Git GUI
【发布时间】:2012-03-12 16:51:04
【问题描述】:

我曾经在 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)

我该如何解决这个问题?

【问题讨论】:

  • 您可能会考虑使用单独的非 cygwin/msys shell 来启动提供 git gui 的 Git For Windows。您只需要注意您的 cygwin/windows 路径,因此 cygwin 不会尝试使用它而不是 cygwin 版本,这可能会导致一些问题。
  • @AndrewD 将适用于 Windows 的 Git 与 Cygwin 相结合将成为一个 PITA:不同的文件名约定,甚至不同的主目录(通常),因此您必须管理两组 git 设置。

标签: git cygwin tcl x11 tk


【解决方案1】:

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

这应该可以让您启动并运行:

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

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

在 cmets 中,似乎有些人收到错误消息,指出“无法连接以显示“:0.0””。如果你明白了,请将鼠标悬停在应该出现在系统托盘中的 X 上(如果 X 图标已隐藏,您可能需要单击向上的小图标);弹出标题应该写成“Cygwin/X Server:1.0”。在步骤 4 中使用“:1.0”(或您看到的任何内容)作为 DISPLAY 的值,而不是“:0.0”,确保包含冒号。

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

对于感兴趣的人,X11 软件包没有自动安装的原因是它们是not technically needed:可以通过某种复杂的方式使用与 Cygwin 在安装“xinit”时安装的服务器不同的 X11 服务器包。

【讨论】:

  • 外观和感觉已经不是以前的样子了,但至少可以再次使用。谢谢!
  • @Stijn:同意。我也更喜欢旧界面(尤其是因为我有一个 X11 无法理解的自定义 Windows 键盘布局)。 justification for the change 是 Tcl/Tk(Git GUI 和 Gitk 等运行的语言)已移至 X11,因此为避免卡在过时的 Tcl/Tk 上,Cygwin 必须进行相同的更改。
  • 我在我的 bash 配置文件中添加了以下行,以避免每天都执行第 3 步。如果这也适用于您,您可能希望编辑答案。 "startxwin >/dev/null 2>&1 &"
  • 你找到在启动 XWin 服务器时自动隐藏 xterm 的方法了吗?
  • @StijnVanpoucke:是的:从 bash shell 运行 touch ~/.startxwinrc。我已经在超级用户上完全回答了这个问题:superuser.com/q/435768/21002
【解决方案2】:
echo "export DISPLAY=:0.0" >>~/.profile

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

就我而言

【讨论】:

    【解决方案3】:

    避免 X11 并向 Cygwin 添加 Git GUI 支持

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

    1. 为 Windows 安装 Git(非 cygwin)http://git-scm.com/download/win
    2. 打开它的命令行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
    

    【讨论】:

    • 如果你将函数命名为 git-gui 而不是 gg,它会在你输入命令 git gui 时打开 - git 会使用它作为扩展名。
    • 我在 Windows 10 上使用了适用于 Windows 的 Git,而对于 gitk,它的工作方式与此处描述的一样。但是, git gui 根本不会从 cygwin 终端启动(而 git-gui 可以!)。当我添加此处描述的名为 git-gui 的命令时,git gui 和 git-gui 都不再工作了。以防万一其他人有这个问题,至少 git-gui 可以工作(在 bashrc 中没有额外的命令)。
    【解决方案4】:

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

    最大的警告是需要安装适用于 Windows 的 Git,可以在 here 找到下载。

    现在是整个运行的gitk 部分。 Windows 版 Git 包含一个 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"
    }
    

    【讨论】:

      【解决方案5】:

      按照by me_andtititou36 给出的四个步骤后,您可能仍然会遇到启动XwinServer 后XWin 死机的问题。

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

      解决办法是:

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

      【讨论】:

        【解决方案6】:

        这对我有用:

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

        从 Cygwin 包管理器中,执行以下操作:

        安装xorg-server和一些xorg字体,尤其是xorg-x11-fonts-Type1

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

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

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

        startxwin &> /dev/null &
        
        git gui &
        

        【讨论】:

          【解决方案7】:

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

          【讨论】:

          • 你不是说“不要使用 Cygwin 的git...”吗?
          猜你喜欢
          • 2016-01-02
          • 1970-01-01
          • 1970-01-01
          • 2021-10-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多