以下命令
$ git co -b newbranch
$ git co oldbranch
导致“致命:无法执行'git-co':权限被拒绝”错误。
在同一时间,
$ git checkout -b newbranch
$ git checkout oldbranch
和
$ sudo git co -b newbranch
$ sudo git co oldbranch
按照预期工作。为拥有主文件夹的用户设置.git文件夹的所有权权限,0755/0644是.git文件夹/子文件夹/文件的模式。系统中没有git-co
脚本(这是git-checkout
的可扩展别名,它位于/usr/libexec/git-core`目录中)。
别名在主文件夹的.gitconfig
中定义:
[alias]
co = checkout
根用户和非特权用户的git config -l
输出没有区别。尽管如此,sudo git co oldbranch
可以工作,而git co oldbranch
不能。
我遗漏了什么?
Gentoo / kernel 3.0.6 / git 1.7.3.4
发布于 2011-11-05 19:59:24
这个问题的正确答案实际上是不同的。在git运行别名之前,它会检查$PATH
。如果目录不存在,或者没有权限,git会生成"fatal: cannot exec 'git-co': Permission denied"
。它从不检查别名,因此git foobar
将产生相同的错误。
git邮件列表中的好心人也让我想起了一个strace
工具,它可以帮助查找返回EACCES的条目,如:strace -f -e execve git foobar
这个荣誉归功于git邮件列表中的Jeff King。:)
发布于 2012-06-03 12:12:08
检查您是否拥有对git别名的执行权限。提供execute权限为我解决了这个问题。
我下载了“git-credential osxkeychain”并将其添加到/usr/local/bin中,并提供了exec权限,可以顺利地运行该命令。
https://stackoverflow.com/questions/7997700
复制相似问题