我试图通过将这些行添加到我的~/.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。有人请帮帮我。如果我不明白为什么会这样做,我会发疯的!谢谢!
答案 0 :(得分:17)
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
3}}是一个很好的等价物。
dtruss -f -t execve git st 2>&1 | grep EACC
答案 1 :(得分:6)
我也有这个问题,但原因略有不同:
在我的情况下,路径包含一个文件而不是目录的条目。文件本身及其目录的权限很好。加载新终端后,可以从任何地方运行该文件。但是,git给出了相同的错误消息。
因此,除了在路径上查找具有不正确权限的文件夹之外,我建议其他任何有此问题的人也检查路径是否仅指向文件夹而不是文件。
答案 2 :(得分:0)
安装Foundation后在OSX中发现了同样的问题。
我的.bash_profile 中的违规行是一个格式错误的基础导出路径。我没有删除行尾的/ foundation,所以它指的是二进制文件,而不是文件夹。
修好它,重新加载终端,一切都恢复了。
答案 3 :(得分:0)
我也有同样的问题,这是一个格式错误的.bash_profile行。
当我安装WP_CLI时,它将以下行添加到我的.bash_profile
export PATH=/root/.wp-cli/bin:$PATH
我不得不做一点改动。我正在使用CentO。
export PATH=$PATH:/root/.wp-cli/bin
这解决了我的问题。
答案 4 :(得分:0)
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'