Git 钩子:'.git/hooks/pre-commit':不允许操作
Git hooks: '.git/hooks/pre-commit': Operation not permitted
这一切都在 OS X Mojave 上。
我试图阻止自己错误地提交到 master 分支,因为这是我经常做的事情,使用 ,因为我使用 bash 而略有改变而不是 sh。但是,每次我尝试 运行 它时,我都会得到以下信息:
fatal: cannot exec '.git/hooks/pre-commit': Operation not permitted
我检查了 .git
和 .git/hooks
目录的权限。两者都是drwxrwxrwx
。 pre-commit
本身的权限是:
-rwxr-xr-x@ 1 emeyer staff 25 Feb 5 11:50 pre-commit
...这与我复制到pre-commit
的pre-commit.sample
文件相同,然后替换了内容。我尝试了 chmod +w
,但没有解决问题。
我决定简化测试并将 pre-commit
的内容替换为以下内容:
#!/bin/bash
echo "Test"
我仍然遇到上述 Operation not permitted
错误。我也像在 SO 答案的示例中那样使用 #!/bin/sh
进行了尝试;同样的结果。
如果我通过在命令行中键入 ./pre-commit
直接尝试 运行 运行脚本,我会得到一个略有不同的错误:-bash: ./pre-commit: /bin/bash: bad interpreter: Operation not permitted
。无论我使用/bin/bash
、/bin/sh
、/usr/local/bin/bash
还是/usr/local/bin/sh
.
,错误都是一致的
谷歌搜索、Binging 和 SO 搜索都没有给我一个有效的答案,所以我在这里问如何允许操作,或者任何需要的东西。
pre-commit
文件可能有与之关联的文件元数据(ls
输出中的 @
表明了这一点),并且该文件元数据可能包含 com.apple.quarantine属性。
您应该能够使用以下方法确认这一点:
ls -l@ pre-commit
或
xattr -l pre-commit
并且您应该可以通过以下方式删除该属性:
xattr -d com.apple.quarantine pre-commit
参考:
这一切都在 OS X Mojave 上。
我试图阻止自己错误地提交到 master 分支,因为这是我经常做的事情,使用
fatal: cannot exec '.git/hooks/pre-commit': Operation not permitted
我检查了 .git
和 .git/hooks
目录的权限。两者都是drwxrwxrwx
。 pre-commit
本身的权限是:
-rwxr-xr-x@ 1 emeyer staff 25 Feb 5 11:50 pre-commit
...这与我复制到pre-commit
的pre-commit.sample
文件相同,然后替换了内容。我尝试了 chmod +w
,但没有解决问题。
我决定简化测试并将 pre-commit
的内容替换为以下内容:
#!/bin/bash
echo "Test"
我仍然遇到上述 Operation not permitted
错误。我也像在 SO 答案的示例中那样使用 #!/bin/sh
进行了尝试;同样的结果。
如果我通过在命令行中键入 ./pre-commit
直接尝试 运行 运行脚本,我会得到一个略有不同的错误:-bash: ./pre-commit: /bin/bash: bad interpreter: Operation not permitted
。无论我使用/bin/bash
、/bin/sh
、/usr/local/bin/bash
还是/usr/local/bin/sh
.
谷歌搜索、Binging 和 SO 搜索都没有给我一个有效的答案,所以我在这里问如何允许操作,或者任何需要的东西。
pre-commit
文件可能有与之关联的文件元数据(ls
输出中的 @
表明了这一点),并且该文件元数据可能包含 com.apple.quarantine属性。
您应该能够使用以下方法确认这一点:
ls -l@ pre-commit
或
xattr -l pre-commit
并且您应该可以通过以下方式删除该属性:
xattr -d com.apple.quarantine pre-commit
参考: