无法在Windows上使用cygwin启动git gui

Sti*_*cke 67 git x11 cygwin tk-toolkit tcl

我曾经在我的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)
Run Code Online (Sandbox Code Playgroud)

谁知道如何解决这个问题?

me_*_*and 122

编辑:2016年3月更新以计入重命名的套餐等.

Cygwin的gitk和git gui需要X11.这意味着您需要安装一些Cygwin X11软件包并进行设置以便能够打开GUI.

这应该让你启动并运行:

  1. 再次运行Cygwin安装程序(如果需要,再次下载相关设置 - *.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时自动运行).

在评论中,似乎有些人收到错误声明"无法连接到显示器":0.0"'.如果你这样做,将鼠标悬停在系统托盘中应该出现的X上(如果隐藏了X图标,你可能需要点击小图标); 弹出标题应该说"Cygwin/X Server:1.0".使用":1.0"(或任何你看到的)作为DISPLAY步骤4中的值,而不是":0.0",确保包含冒号.

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

对于感兴趣的人来说,X11软件包没有自动安装的原因是它们在技术上并不需要:通过某种复杂的方式可以使用与安装"xinit"软件包时Cygwin安装的X11服务器不同的X11服务器.

  • 我将以下行添加到我的bash配置文件中,以消除每天必须执行的步骤3.如果这对您也有效,您可能希望编辑答案."startxwin>/dev/null 2>&1&" (8认同)
  • @StijnVanpoucke:是的:从bash shell运行`touch~/.startxwinrc`.我已经在超级用户上完全回答了这个问题:http://superuser.com/q/435768/21002 (5认同)
  • @Stijn:同意.我也喜欢旧的界面(尤其是因为我有一个X11无法理解的自定义Windows键盘布局).[更改的理由](http://cygwin.com/ml/cygwin/2012-02/msg00447.html)是Tcl/Tk(语言Git GUI和Gitk等运行)已移至X11为了避免陷入过时的Tcl/Tk,Cygwin不得不做出同样的改变. (4认同)
  • 外观与以往不同,但至少它再次起作用.谢谢! (2认同)
  • 你有没有办法在启动XWin服务器时自动隐藏xterm? (2认同)

Dav*_*tik 9

花了更多的时间比我想承认的那样,我设法找到一个可以gitk从我的cygwin shell 执行的工作解决方案.我无法获得启动X服务器可靠工作的任何说明,最后,解决方案非常简单.

最大的警告是需要安装Git for Windows,可以在此处找到下载.

现在为整个运行gitk部分.Git for windows包含一个cmd文件夹,它有一个gitk.cmdWindows命令文件.这就是你需要打电话才能gitk打开的全部内容.

$ [path-to-git]/cmd/gitk.cmd
Run Code Online (Sandbox Code Playgroud)

在我的系统上,Git路径位于"C:\ Program Files(x86)\ Git"中,因此命令如下所示:

$ "/cygdrive/c/Program Files (x86)/Git/cmd/gitk.cmd"
Run Code Online (Sandbox Code Playgroud)

在我的〜/ .bash_profile中我添加了一个处理该调用的函数,如下所示:

gitk() {
  "/cygdrive/c/Program Files (x86)/Git/cmd/gitk.cmd"
}
Run Code Online (Sandbox Code Playgroud)

希望这有助于其他人试图弄清楚这件事.


小智 6

echo "export DISPLAY=:0.0" >>~/.profile
Run Code Online (Sandbox Code Playgroud)

要么

echo "export DISPLAY=:0.0" >>~/.bash_profile
Run Code Online (Sandbox Code Playgroud)

在我的情况下


And*_*ewD 6

避免使用X11并添加git gui对cygwin的支持

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

  1. 安装适用于Windows的Git(非cygwin)http://git-scm.com/download/win
  2. 打开它的命令shell C:\Program Files (x86)\Git\Git Bash
  3. git gui

(可选)如果你想留在cygwin中启动git gui,可以在你的功能中添加一个功能~/.bashrc.唯一需要注意的是,由于递归和参数混淆而没有命名函数git,而且你是Git for Windows shell的事实也可能在启动时添加相同的函数.您可能还会遇到路径问题,因此请务必正确设置路径.

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


    }
Run Code Online (Sandbox Code Playgroud)

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

source ~./bashrc
Run Code Online (Sandbox Code Playgroud)

然后简单地说:

gg
Run Code Online (Sandbox Code Playgroud)