【问题标题】:msysgit bash shell- how to troubleshoot "cannot find command"msysgit bash shell-如何解决“找不到命令”
【发布时间】:2010-04-18 22:39:29
【问题描述】:

我需要帮助让 git 扩展与 msysgit 一起运行。我在扩展 git-tfs 和 git-fetchall 上运气不好,在这两种情况下都是同一个问题。该插件需要将文件放置在 git 可以找到的位置(git-tfs.exe 和 git-fetchall.sh)。我理解这意味着文件需要位于“PATH”环境变量中的目录中。 在这两种情况下,我都陷入了困境:

$ git-diffall
bash: git-diffall: command not found

或:

$ git-tfs
bash: git-tfs: command not found

当我从常规命令 shell 运行 echo %PATH% 时,它显示我的路径变量包括 git-diffall 和 git-tfs 所在的目录。我该如何调试这个,或者我错过了什么?在 msysgit 中是否有办法验证命令搜索路径是否符合我的预期?

【问题讨论】:

  • 在 OSX 上,我使用 git diff HEAD 在提交前区分我最近的更改。
  • 我不是在问如何区分。我在问如何让插件工作,当 git 说它找不到它们时。
  • 不是 git 说它找不到它们。是贝壳说的。
  • 听起来不错。我是 windows 用户,不要花太多时间在 unix shell 上。
  • 警告,从 git 2.0.X/2.1 (Q3 2014) 开始,git diffall 将始终返回“command not found: it has been removed. See my answer below

标签: git msysgit


【解决方案1】:

好的,我找到了断开连接。直到我开始从 shell 运行“echo $PATH”(而不是从 windows 命令 shell 中 echo %PATH%,结果不同)之前,这都是难以捉摸的。

两个问题:

  1. 当我配置环境变量时,我原来在路径末尾有一个'\'。这似乎导致 echo $PATH 显示无效的路径名,例如 '/c:/directory' 而不是 '/c/directory/。

  2. 需要重新启动才能通过 Windows UI 对系统环境变量所做的更改反映在 msysgit/bash/git shell 中。

【讨论】:

  • +1,谢谢。天啊,快到 2012 年了,我们仍然需要重新启动以反映 PATH 的变化 :(
【解决方案2】:

除了在 $PATH 中之外,它们还需要是可执行的。因此,在 Cygwin 中(我假设是 Windows,因为您在问题中使用了“%PATH%”而不是“$PATH”,这是 Windows 特有的东西),您应该导航到程序 git-difall 所在的目录找到,然后键入:

chmod a+x git-diffall

此外,与忽略“.exe”、“.com”、“.bat”等扩展名的 Windows 不同,BASH 确实关心这些扩展名,因此如果您的路径上有 git-diffall.sh,则需要以git-diffall.sh 而不是git-diffall 调用它。如果你想以git-diffall 调用它,那么只需删除文件扩展名。您也可以使用 Cygwin 命令行执行此操作,使用:

mv git-diffall.sh git-diffall

另外,第一个chmod需要根据实际名称使用git-diffallgit-diffall.sh

【讨论】:

  • 感谢您在回复之前阅读我的问题。当我的 msysgit shell 导航到它们所在的文件夹时,我似乎可以使用这些命令,因此它似乎与 msysgit 在哪里寻找它们更相关。您将如何设置包含它们的路径?
  • 在 msysgit/bash/git shell 中使用 $PATH 进行调试有助于揭示断​​开连接的位置。
【解决方案3】:

我今天遇到了同样的问题,但没有解决方案,所以我会加两分钱。

如果您在 Windows 中设置了 %HOME% 路径 - 请确保:

  1. 它是在 -user- 环境设置中创建的,而不是在 -system- 环境设置中创建的。 git 本身似乎可以正确使用系统变量,但 GitExtensions 仅从用户变量中获取 HOME。
  2. 它不等于 Git 基本目录。问题是 msysgit 将C:\Program Files (x86)\Git(或您安装它的任何地方)视为根/ 并将/bin 添加到它实际上类似于命令PATH=$HOME/bin:$PATH。因此,如果您的 %HOME%C:\Program Files (x86)\Git,您的 $PATH 将以 //bin: 开头,这显然是不正确的。

【讨论】:

    【解决方案4】:

    警告,从 git 2.0.X/2.1(2014 年第三季度)开始,git diffall总是返回“command not found”:它已被删除。

    通过Jonathan Nieder (jrn) 看到commit 502b0a1(在Tim Henigan (thenigan) 的协助下):

    contrib:删除git-diffall

    contrib/ 中“git diffall”脚本的功能已合并到“git difftoolwhen the --dir-diff option was added in v1.7.11 (ca. June, 2012)
    一旦difftool 了解了这些功能,diffall 脚本就会过时。

    唯一的区别在于,与工作树相比,difftool 在差异工具退出时将用户修改的所有文件复制回工作树。
    git diffall”需要--copy-back 选项才能执行相同操作。
    所有其他diffall 选项在difftool 中具有相同的含义。

    删除旧的diffall 脚本,让人们选择要使用的工具更轻松。发行说明中的​​指针应该足以帮助当前用户迁移。

    【讨论】:

      猜你喜欢
      • 2016-10-07
      • 1970-01-01
      • 2016-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多