首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Git挂钩:'.git/hooks/pre-commit':不允许操作

Git挂钩:'.git/hooks/pre-commit':不允许操作
EN

Stack Overflow用户
提问于 2020-02-06 01:03:23
回答 1查看 2.3K关注 0票数 6

这一切都是在OS X Mojave上实现的。

我试图阻止自己错误地提交到master分支,因为这是我经常做的一件事,使用the pre-commit Git hook from this SO answer时稍有更改,因为我使用bash而不是sh。不过,每次我尝试运行它时,都会得到以下结果:

代码语言:javascript
复制
fatal: cannot exec '.git/hooks/pre-commit': Operation not permitted

我检查了.git.git/hooks目录的权限。两者都是drwxrwxrwxpre-commit本身的权限包括:

代码语言:javascript
复制
-rwxr-xr-x@  1 emeyer  staff    25 Feb  5 11:50 pre-commit

…这与我复制到pre-commit然后替换内容的pre-commit.sample文件相同。我尝试过chmod +w,但没有解决这个问题。

我决定简化我的测试,并用以下内容替换pre-commit的内容:

代码语言:javascript
复制
#!/bin/bash

echo "Test"

我仍然得到上面引用的Operation not permitted错误。我也尝试了#!/bin/sh,就像SO答案的例子一样;结果是一样的。

如果我尝试直接运行脚本,在命令行中输入./pre-commit,我会得到一个稍微不同的错误:-bash: ./pre-commit: /bin/bash: bad interpreter: Operation not permitted。无论我使用/bin/bash/bin/sh/usr/local/bin/bash还是/usr/local/bin/sh,错误都是一致的。

搜索、搜索和搜索都没有得到一个有效的答案,所以我在这里询问如何允许操作,或者任何需要的操作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-06 02:54:19

pre-commit文件可能具有与其关联的文件元数据( ls输出中的@表明了这一点),并且该文件元数据可能包括com.apple.quarantine属性。

您应该能够使用以下命令确认这一点:

ls -l@ pre-commit

xattr -l pre-commit

并且您应该能够使用以下命令删除该属性:

xattr -d com.apple.quarantine pre-commit

参考:https://stackoverflow.com/a/9952742/157515

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60080701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档