【问题标题】:Git Alias ProblemGit别名问题
【发布时间】:2011-04-30 11:44:23
【问题描述】:

我试图通过将这些行添加到我的 ~/.gitconfig 文件中来设置一些 git 别名:

[alias]
  st = status
  ci = commit
  br = branch

当我在终端中运行这些命令时:git st,我收到以下错误fatal: cannot exec 'git-st': Not a directory。我不知道问题是什么,我在网上查了一下,找不到它为什么会这样。我正在使用 Git 1.7.1 运行 Mac OS 10.6.4。有人请帮帮我。如果我不弄清楚为什么会这样,我会发疯的!谢谢!

【问题讨论】:

  • git status 工作正常,对吧?
  • 是的。所有正常命令都可以正常工作,只是提示该错误的别名。
  • git config alias.st 是否打印 status
  • 关于我的 PATH 中的内容与 git 冲突的任何想法?我基本上在我的 PATH、macports、RVM(Ruby 版本管理器)、我的 Ruby 安装路径和 ~/bin 的路径中,这是我存储我的二进制文件的自定义文件夹。

标签: git alias


【解决方案1】:

unutbu 正确指出了git-osx-installer issue 53,其中指出:

基本上,我的路径中有/root/bin,并且没有对该目录的权限。

有趣的是,这不是 git 1.6.3 的问题,而是 1.7.0 和 1.7.1 的问题。

strace -f -eexecve git st 2>&1 | grep EACC可以帮忙看看是哪个目录有问题:

[pid 6469] execve("/usr/games/bin/git-st", ["git-st"], [/* 72 vars */]) = -1 EACCES

(在本例中为/usr/games/bin/

Another way找到有问题的路径是:

echo $PATH |tr ':' '\n' |xargs ls -ld

我的一个无效项目实际上是一个 NFS 安装目录,我没有访问权限,因为我没有通过 Kerberos 对公司 NFS 服务器进行身份验证。
PATH 中删除该项目可以解决此问题,并且“git stat”(我的状态别名)现在可以工作了。


PeterT 在评论中提到您可能没有可用的strace(如在 Solaris 中的or OsX,详见“Equivalent of strace -feopen < command > on mac os X”),在这种情况下dtruss 是一个很好的等价物。

dtruss -f -t execve git st 2>&1 | grep EACC

【讨论】:

  • 解决了!我在我的~/.bash_profile 中查找路径中的一个杂散项目,我找到了它,将其删除,并且它起作用了。非常感谢!
  • 如果你没有strace:dtruss -f -t execve git st 2>&1
  • @PeterT:好点。我已将其包含在答案中以提高知名度。
  • 不确定我是否可以在此评论中添加一个示例,但我遇到了与 OP 相同的问题,但是当我运行上面给出的所有 3 个命令时,什么都没有弹出。 $ bash --version && git --version GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu) Copyright (C) 2005 Free Software Foundation, Inc. git version 1.7.12
  • 已修复。我运行echo $PATH |tr ':' '\n' |xargs ls -ld 并显示一个特定条目为“不是目录”。我从路径中删除了它并运行了source ~/.bashrc。现在 git alias 正在工作。
【解决方案2】:

我也遇到过这个问题,但原因略有不同:

在我的例子中,路径包含一个文件而不是目录的条目。文件本身及其目录的权限很好。当一个新的终端被加载时,文件可以从任何地方运行。但是,git 给出了相同的错误消息。

除了在路径上查找权限不正确的文件夹外,我建议遇到此问题的其他人还要检查该路径是否仅指向文件夹而不是文件。

【讨论】:

    【解决方案3】:

    安装 Foundation 后在 OSX 中发现同样的问题。

    我的 .bash_profile 中的违规行是格式错误的基础导出路径。我没有删除行尾的 /foundation,所以它指向的是二进制文件,而不是文件夹。

    刚刚修复它,重新加载终端,一切都恢复正常了。

    【讨论】:

      【解决方案4】:

      我也遇到了同样的问题,这是一个格式错误的 .bash_profile 行。

      当我安装 WP_CLI 时,它会在我的 .bash_profile 中添加以下行

      export PATH=/root/.wp-cli/bin:$PATH
      

      我不得不为此稍作改动。为此,我正在使用 CentO。

      export PATH=$PATH:/root/.wp-cli/bin
      

      这解决了我的问题。

      【讨论】:

        【解决方案5】:

        Git 还有一个内置的别名命令。

        别名命令示例:

        git config --global alias.co checkout
        git config --global alias.ci commit
        git config --global alias.st status
        git config --global alias.br branch
        git config --global alias.lola 'log --graph --decorate --pretty=oneline --abbrev-commit --all'
        

        【讨论】:

          猜你喜欢
          • 2021-06-24
          • 1970-01-01
          • 2016-10-09
          • 1970-01-01
          • 2016-06-05
          • 1970-01-01
          • 2023-03-18
          • 2010-12-11
          • 1970-01-01
          相关资源
          最近更新 更多