我已经在windows上使用git和git命令两年了,没有任何问题。最近,我在windows 10上安装了ubuntu,并启用了windows子系统for linx (wsl),并在ubuntu中安装了git,认为我将从那里运行git命令。从那以后,当我把git bash作为git的一部分用于窗口时,git就会很坏。
当我在git中的git bash提示符中运行git gui时,我得到
C:/Program Files/Git/mingw64/libexec/git-core\git-gui: line 3: exec: wish: not found关于上面的输出,我发现一件非常令人费解的事情是,git-gui之前的斜杠是一个“\”反斜杠,而其他的斜杠是正切斜杠,尽管它可能不相关?
我仍然可以从windows上下文菜单成功运行git gui (当我右键单击一个文件夹时)。
我尝试过的事情:
从ubuntu
添加了c:\Git\mingw64 64\bin
activeTCl/bin (包含wish.exe)在我的系统路径上。当我在git bash中运行“愿望-版本”时,会弹出一个小小的空窗口,愿望似乎是可以实现的,不管它是什么。以前从来不需要well或ActiveTcl来运行git命令,所以我也对此感到有点困惑!任何帮助都将不胜感激!如果git需要用于windows的话,为什么windows安装程序不安装它呢?
根据请求,下面是我在为windows安装git时使用的选项:
发布于 2019-11-28 13:33:09
我用2.24.0.windows.2版本重新安装了git,并提供了类似于问题中提到的类似选项。
我在git-bash上运行了which命令,以获得执行git-gui的路径。
$ which -a git-gui
/cmd/git-gui检查/cmd是否存在于PATH中,在git中使用echo $PATH,还是在Windows中使用echo %PATH%检查PATH中是否存在C:/Git/cmd。如果没有,则可以将其添加到PATH变量( Windows或git)中。
如果which命令产生多个路径,请检查/cmd/git-gui是否从git执行良好,并删除其他路径(注意!引用从git-gui变量中为PATH找到的多条路径。
但是,当我假设/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另一种情况是,git-gui存在多条路径:
# 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.,参数-a用于Print all matches in PATH, not just the first
我在存储库上找到了一个关闭的issue。乍一看似乎与此无关,然而,在看到fix的提交消息时,它提供了一些关于您可能面临错误的背景信息。
git-gui (
Create Desktop Shortcut):在Create Desktop Shortcut中使用git-gui.exe
当调用Repository>Create Desktop Shortcut时, GUI假设在上直接调用GUI是可以的。但是,在GitforWindows2.x的上下文中,这留下了几个关键的环境变量未初始化,导致一个无法工作的快捷方式。
为了解决这些环境变量的问题,Git附带了一个方便的git-gui.exe**,,所以让我们在它可用时使用它。
这修正了#448
签名人:约翰·辛德林
正如上面提交消息中所强调的那样,作者明确指出要使用位于git-gui.exe目录中的/cmd。
最后,我建议任择议定书:
Windows和git-bash的
git-gui的冲突目录,分别使用where和which命令(Windows PATH env传递给git-bash),PATH变量,并且只向d53添加PATH变量,然后检查是否可以从git-gui从git-gui运行在Windows cmd h 259/code>H 160检查是否将目录添加到git-bash的目录中。env变量PATH正确(Windows和git 运行git-gui和git gui,git-bash中的这两个命令会产生相同的错误吗?
,我在windows上使用git和gui命令已经有两年了,没有问题。最近,我在windows 10上安装了ubuntu,并启用了windows子系统for linx (wsl),并在ubuntu中安装了git,认为我将从那里运行git命令。从那以后,当我把git bash作为git的一部分用于窗口时,git就会很坏。
为了复制这个,我
Windows10VM(Build1909,用于Windows 2.24.0.windows.2的单语言家庭Edition)
Install git )- Git installation location : `C:\Git`
- Similar options as you mention in the question except for the editorObservations
- C:\Git\cmd被添加到Windows的PATH环境变量(因此也是git-bash )。
- Both the commands `git-gui` and `git gui` work from git-bash
从微软商店(Ubuntu18.04)打开Bash on Ubuntu Windows
Install ubuntu应用程序的WindowsFeatureWindows Subsystem for linux( git是pre-installed)
Update git到最新版本,使用this
git works为bash和运行在2.24.0和2.24.0.windows.2 respectively
Both上的窗口,命令git gui和git-gui按预期从git-bash
Uninstalled Ubuntu运行到bash,并关闭wsl,它仍然工作
)。
进一步的debugging可以使用git的环境variables来完成。
GIT_EXEC_PATH确定Git在哪里查找它的子程序(比如git-提交、git-diff等)。您可以通过运行git --exec-path来检查当前设置。
C:/Git/mingw64/libexec/git-core
在git-bash上运行此命令git --exec-path,并验证它是否显示:
GIT_TRACE控制不属于任何特定类别的一般跟踪。这包括别名的扩展,以及对其他子程序的委托.
git-gui)
运行此命令GIT_TRACE=1 git gui,并显示输出(包括已解析的目录)。如果设置了
GIT_CONFIG_NOSYSTEM,则禁用系统范围内配置文件的使用.如果您的系统配置干扰了您的命令,但是您没有权限更改或删除它,这是非常有用的。
运行此命令GIT_CONFIG_NOSYSTEM=1 git gui的
如果没有其他的工作,您可以打开一个新的发行版here。
发布于 2019-11-22 23:21:24
因此,这太长了,不能发表评论:看一看here
那么,为什么下面的尝试不起作用呢?
高管希望"$0“"$@”
原因是某些版本的sh有一个bug。如果没有参数,这些破碎的sh将仍然将"$@“展开为单个空参数。糟了。
如果设置了sh语法${VAR+VALUE},则sh语法${ $VAR }扩展为值,而没有其他情况。我们滥用这个语法来绕过buggy的sh实现。回想一下第一个参数名为$1。如果它存在,那么我们使用"$@";否则我们什么也不做:
主管希望"$0“${1+"$@"}
我想你是在Windows上:
去...\Git\mingw64\libexec\git-core。那你应该去找git-gui。如果你用编辑器打开它,它看起来就像
#!/bin/sh
# Tcl ignores the next line -*- tcl -*- \
exec wish "$0" -- "$@"
...在我的案子里。
我不是这里的专家,我也不会忘记上面的链接中的细节,但是由于它只是一个简单的片段,而且您已经重新安装了所有的东西,我会试一试。
#!/bin/sh
# Tcl ignores the next line -*- tcl -*- \
exec wish "$0" ${1+"$@"}
...我希望这会有所帮助,而且不会破坏任何东西;-)
https://stackoverflow.com/questions/59002095
复制相似问题