我已经在Windows上使用git和git gui命令大约两年了,没有任何问题。最近,我在Windows 10上安装了ubuntu,并为linx(wsl)启用了Windows子系统,并在ubuntu bash中安装了git,以为我将从那里运行git命令。从那时起,当我将git bash用作Windows的git的一部分时,git就被破坏了。
当我在git的git bash提示符下为Windows运行git gui时,我得到
C:/Program Files/Git/mingw64/libexec/git-core\git-gui: line 3: exec: wish: not found
对于上述输出,我发现真正令人困惑的一件事是git-gui之前的斜杠是'\'反斜杠,而其他斜杠是正斜杠,尽管这可能是无关紧要的?
我仍然可以从Windows上下文菜单中成功运行git gui(当我右键单击文件夹时)。
我尝试过的事情:
activeTCl / bin(包含wish.exe)在我的系统路径上。当我在git bash中运行“ wish --version”时,弹出一个空窗口,无论它是什么,wish似乎都可以访问。之前从来不需要希望或ActiveTcl来运行git命令,所以我对此也有些迷惑!任何帮助,将不胜感激!如果git for Windows需要,为什么git for Windows安装程序不安装它?
根据要求,这是我为Windows安装git时使用的选项:
答案 0 :(得分:2)
我重新安装了版本为2.24.0.windows.2
的git,并使用了与问题中提到的选项类似的选项。
我在git-bash上运行了which
命令,以获取执行git-gui的路径。
$ which -a git-gui
/cmd/git-gui
在git bash中使用/cmd
检查PATH
是否在您的echo $PATH
中,或者使用{{1}检查C:/Git/cmd
是否在您的PATH
中在Windows cmd中。如果没有,则可以将其添加到echo %PATH%
变量(Windows cmd或git-bash)中。
如果PATH
命令产生多个路径,请检查which
是否在git bash上执行良好,并删除其他路径(<警告> 是指为{{ 1}})从变量/cmd/git-gui
。
当我假设git-gui
不在我的路径时,我会遇到相同的错误
PATH
另一种情况是git-gui存在多个路径:
/cmd
注意:
# Simulate an empty PATH variable
$ export PATH=:
# Run git-gui from git-core directory
$ C:/Git/mingw64/libexec/git-core/git-gui
C:/Git/mingw64/libexec/git-core/git-gui: line 3: exec: wish: not found
命令可用于# Simulate PATH variable with the following directories
$ export PATH=/usr/bin:/mingw64/libexec/git-core/:/cmd
# Run git-gui
$ git-gui
/mingw64/libexec/git-core/git-gui: line 3: exec: wish: not found
# Lists the paths
$ which -a git-gui
/mingw64/libexec/git-core/git-gui
/cmd/git-gui
和自变量
which
用于Write the full path of COMMAND(s) to standard output.
我在Windows GitHub存储库的git上找到了封闭的issue。乍一看似乎无关,但是,在看到fix的提交消息时,它为您可能会遇到错误的原因提供了一些背景信息。
git-gui(Windows):在
中使用git-gui.exe-a
调用
Print all matches in PATH, not just the first
时, Git GUI假定 可以直接在Windows上调用Create Desktop Shortcut
。但是,在 Git for Windows 2.x的上下文,留下了几个关键环境 变量未初始化,导致无法使用的快捷方式。为解决这些环境变量问题,Git for Windows随附了一个 方便的
Repository>Create Desktop Shortcut
,因此,请在可用时使用它。此修复#448
签名人:Johannes Schindelin
如上面的提交消息中突出显示的那样,作者明确指出要使用位于wish.exe
目录中的git-gui.exe
。
最后一点,我建议OP:
git-gui.exe
和/cmd
命令检查Windows cmd和git-bash的PATH
变量是否包含git-gui
的冲突目录( Windows cmd {{1} } env传递给git-bash )where
变量,如上所示,仅将which
添加到git-bash的PATH
变量中,然后检查您是否能够运行{{1} }来自git-bash PATH
是否在Windows cmd中运行/cmd
中
( Windows cmd和git bash )PATH
和git-gui
,git-bash中的两个命令是否给出相同的错误?我一直在Windows上使用git和git gui命令大约2 年没有问题。最近,我在Windows 10和Windows 10上安装了ubuntu 为linx(wsl)启用了Windows子系统,并在 ubuntu bash,以为我会从那里运行git命令。从那时起,git 当我将git bash用作Windows的git的一部分时,它已经坏了。
为了重现这一点,我
为Windows版本git-gui
PATH
git-gui
已添加到Windows cmd的git gui
环境变量中(因此也添加了git-bash)2.24.0.windows.2
和C:\Git
均可从git-bash中使用为C:\Git\cmd
启用Windows功能PATH
git-gui
和git gui
上的bash和Windows Windows Subsystem for linux
和Bash on Ubuntu Windows
都可以从git-bash中正常使用另外debugging可以在git的环境variables中完成。
2.24.0
确定Git在哪里寻找其子程序(例如 git-commit,git-diff等)。您可以检查当前设置 通过运行git --exec-path。
2.24.0.windows.2
,并验证是否
显示:git gui
git-gui
控制常规跟踪,这些跟踪不适合任何常规跟踪 具体类别。这包括别名的扩展,以及 委托其他子程序。
GIT_EXEC_PATH
,并显示输出
(包括已解析的git --exec-path
的exec目录)GIT_CONFIG_NOSYSTEM(如果设置)将禁用系统范围的使用 配置文件。如果您的系统配置是 干扰您的命令,但您无权更改或 删除它。
C:/Git/mingw64/libexec/git-core
如果没有其他作用,则可以打开新期刊here。
答案 1 :(得分:0)
因此,此评论太长了:看看here:
那为什么下面的尝试不起作用?
exec wish "$0" "$@"
原因是某些sh版本存在错误。如果没有 论点,这些破碎的sh仍将“ $ @”扩展为单个 空参数。糟糕!
如果设置了$ VAR,则sh语法$ {VAR + VALUE}扩展为VALUE,并且 别无其他。我们滥用此语法来解决越野车问题 实现。回想一下,第一个参数名为$ 1。如果它 存在,那么我们使用“ $ @”;否则我们什么都不做:
exec wish "$0" ${1+"$@"}
我认为您使用的是Windows:
转到...\Git\mingw64\libexec\git-core
。然后,您应该找到git-gui
。如果您使用编辑器打开它,看起来就像
#!/bin/sh
# Tcl ignores the next line -*- tcl -*- \
exec wish "$0" -- "$@"
...
就我而言。
我不是这里的专家,我也不理解上面链接中的详细信息,但是由于它只是一个skript,并且您已经重新安装了所有内容,因此我将尝试一下
#!/bin/sh
# Tcl ignores the next line -*- tcl -*- \
exec wish "$0" ${1+"$@"}
...
我希望能有所帮助并且不会破坏任何东西;-)