无法在Windows上使用Cygwin启动Git GUI
我以前在Cygwin控制台中启动时没有任何问题,但自从我更新Cygwin后,我收到以下错误消息:无法在Windows上使用Cygwin启动Git GUI,git,cygwin,tcl,x11,tk,Git,Cygwin,Tcl,X11,Tk,我以前在Cygwin控制台中启动时没有任何问题,但自从我更新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_me
$ 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的gitk和Git GUI需要X11。这意味着您需要安装一些Cygwin X11软件包,并将其设置为能够打开GUI 这将帮助您启动并运行:
echo“export DISPLAY=:0.0”>~/.profile
即可在创建新外壳时自动运行)
在评论中,似乎有些人出现了错误,说明“无法连接到显示”:0.0“。如果您看到了,请将鼠标悬停在本应出现在系统托盘中的X上(如果X图标已隐藏,则可能需要单击向上的小图标);弹出标题应该是“Cygwin/xserver:1.0”。使用“:1.0”(或您看到的任何内容)作为步骤4中显示的值,而不是“:0.0”,确保包含冒号
如果您在启动X服务器时遇到任何其他问题,您可能会发现有一个名为~/.xsession errors
;检查一下它的内容,看看哪里出了问题。还要检查您是否有~/.startxwinrc
文件,并尝试删除它,看看这是否解决了问题
对于感兴趣的人来说,X11软件包没有自动安装的原因是:在安装“xinit”软件包时,可以通过一些复杂的方式使用不同于Cygwin安装的X11服务器
或
在我的例子中避免使用X11,并向Cygwin添加Git GUI支持 如果您想避免X11(谁不想呢?):
C:\ProgramFiles(x86)\Git\Git Bash
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;
}
编辑完.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”中,因此命令如下所示:
gitk() {
"/cygdrive/c/Program Files (x86)/Git/cmd/gitk.cmd"
}
$“/cygdrive/c/Program Files(x86)/Git/cmd/gitk.cmd”
在我的~/.bash_概要文件中,我添加了一个函数来处理该调用,如下所示:
gitk() {
"/cygdrive/c/Program Files (x86)/Git/cmd/gitk.cmd"
}
在完成了给定的四个步骤和之后,在启动XwinServer之后,XWin可能仍然存在问题 原因是它依赖于Cygwin终端/控制台,即主机,如果没有Cygwin控制台,Xwin将失效 解决办法是:
启动Cygwin控制台(您可以将
mintty
命令放入Cygwin主目录下的文件.startxwinrc
中,使其自动启动)。以下是对我有效的方法:
cat >> ~/.bash_profile <<< "export DISPLAY=:0.0"
关闭Cygwin终端并再次打开,然后键入
startxwin &> /dev/null &
git gui &
基于:不要使用Cygwin的
git
,而是使用Windows git的gitk
和git gui
。换句话说,从Cygwin(如果已安装)卸载git gui和gitk包。然后,哪个gitk
应该指向Windows文件,而不是/usr/bin
中的Cygwin二进制文件。外观和感觉与过去不同,但至少它可以再次工作。谢谢@斯蒂金:同意。我也更喜欢旧界面(尤其是因为我有一个自定义的Windows键盘布局,X11无法理解)。问题是Tcl/Tk(运行在上面的Git GUI和Gitk等语言)已经迁移到X11,因此为了避免被过时的Tcl/Tk卡住,Cygwin不得不做同样的更改。如果这也适用于您,您可能希望编辑答案。“startxwin>/dev/null 2>&1&”启动XWin服务器时,您找到自动隐藏xterm的方法了吗?@StijnVanpoucke:Yes:从bash shell运行touch~/.startxwinrc
。我已经完全回答了超级用户:你可以考虑使用一个单独的非CygWi/MyShell代替它来提供Git GUI。您只需注意cygwin/windows路径,这样cygwin就不会尝试使用它而不是cygwin版本,这可能会导致一些问题。@AndrewD将Git for windows与cygwin结合将是一个难题:不同的文件名约定,甚至不同的主目录(通常)因此,您必须管理两组git设置
ln -s /cygdrive/c/Windows/Fonts /usr/share/fonts/win-fonts
startxwin &> /dev/null &
git gui &