Git Alias问题

age*_*217 16 git alias

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

[alias]
  st = status
  ci = commit
  br = branch
Run Code Online (Sandbox Code Playgroud)

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

Von*_*onC 17

unutbu正确地指出了git-osx-installer问题53,其中指出:

基本上,我/root/bin在我的路径中没有该目录的权限.

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

A strace -f -eexecve git st 2>&1 | grep EACC可以帮助查看问题所在的目录:

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

(在这个例子中,/usr/games/bin/)

找到问题路径的另一种方法是:

echo $PATH |tr ':' '\n' |xargs ls -ld
Run Code Online (Sandbox Code Playgroud)

我的一个无效项实际上是一个NFS安装的目录,我没有访问权限,因为我没有通过Kerberos对公司NFS服务器进行身份验证.
PATH修复问题中删除那一项,' git stat'(我的状态别名)现在可以正常工作.


PeterT在评论中提到你可能没有strace(比如Solaris 或OsX,详见" 等效strace -feopen < command >于Mac OS X "),在这种情况下dtruss是一个很好的等价物.

dtruss -f -t execve git st 2>&1 | grep EACC
Run Code Online (Sandbox Code Playgroud)


小智 6

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

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

因此,除了在路径上查找具有不正确权限的文件夹之外,我建议其他任何有此问题的人也检查该路径仅指向文件夹而不指向文件.