【问题标题】:Git commit permissions error when working on a remote host在远程主机上工作时出现 Git 提交权限错误
【发布时间】:2010-10-20 07:43:03
【问题描述】:

我正试图让我的网站受到版本控制。我使用 ExpanDrive 直接在服务器上工作,它使用 MacFUSE 将 SFTP 连接挂载为本地卷,我可以通过终端和其他本地应用程序访问它。

无论如何,一切都很顺利,直到我尝试提交,当我收到这条消息时:

fatal: exec .git/hooks/pre-commit failed.

如果我尝试手动运行 exec 命令,我会看到:

-bash: /Volumes/1&1 Internet/website/.git/hooks/pre-commit: Permission denied
-bash: exec: /Volumes/1&1 Internet/website/.git/hooks/pre-commit: cannot execute: Unknown error: 0

我尝试使用我的 SFTP 客户端为 .git 目录下的所有内容提供完全 (777) 权限,但仍然没有成功。有谁知道我还可以尝试什么?

【问题讨论】:

    标签: git unix permissions


    【解决方案1】:

    通过授予 .git 目录下的所有内容完全 (777) 权限,您已经启用了 .git/hooks 中 Git 附带的所有示例脚本,通常它们的执行位是关闭的。当您尝试commit 时,现在可执行的示例预提交脚本会尝试运行以将提交格式化为补丁。

    除非这是你想要做的,否则我建议你将chmod /git/hooks/* 设置为 644,这样钩子脚本就不会执行。

    编辑 -- 重置挂钩权限可以让您回到最初遇到问题的状态。 接下来尝试使用--no-verify 标志进行提交,这应该绕过预提交挂钩(以及对提交消息的一些小检查)。这可能是一种解决方法,但我仍然不明白您为什么会遇到最初的问题。代码看起来非常简单——如果没有启用它,我看不出它如何尝试执行该钩子。 如果以同样的方式失败,那么我会认为 ExpanDrive/MacFuse 系统没有正确处理权限(但这不太可能)。

    【讨论】:

    • 感谢您的建议,不幸的是,我尝试此操作后仍然看到错误。
    • 当我的手指还在键盘上时,我想我的大脑已经在去机场的路上了。显然,重置权限只会让您回到最初遇到问题的地方。
    • 不幸的是,即使使用 --no-verify,我也遇到了麻烦,现在我在新的仓库中添加文件时遇到错误。我放弃了这个。
    【解决方案2】:

    我最终在我的笔记本电脑上设置了一个本地开发环境,我放弃了尝试通过 ExpanDrive 使用 git。在花了更多时间使用它之后,这些工具似乎不适合一起工作。

    【讨论】:

      【解决方案3】:

      我相信最新版本的 git 使用不同于权限的机制来启用钩子。因此,如果您使用的是最新版本,您可能会从 .git/hooks 目录中删除所有内容(或将其移至其他位置),看看是否是问题所在。

      【讨论】:

        【解决方案4】:

        我遇到了同样的问题。我正在单独的开发服务器 (devserver) 上进行开发和测试,而我的 IDE (PhpStorm) 在我的 Macbook 上。我正在使用 ExpanDrive 在我的 Mac 上通过 SFTP (SSH) 挂载开发服务器的 webroot。当我尝试在我的 Mac 上使用 Git 时,我收到了有关 SHA1 文件和其他内容的错误。

        我是这样解决的:

        我已将.git 目录从/Volumes/devserver 中的已安装驱动器移动到我Macbook 上我家目录中的某个位置。之后,我将旧位置符号链接到 .git 目录的新位置。我必须使用../../Users/jeroen/###,否则链接不正确。

        移动和制作符号链接的示例:

        cd  /Volumes/devserver
        mkdir -p /Users/$USER/Code/devserver
        mv .git /Users/$USER/Code/devserver/.git
        ln -s ../../Users/$USER/Code/devserver/.git ./git
        git status
        

        第一次使用“git”命令可能需要一段时间,因为 Git 正在重建一些缓存。

        【讨论】:

        • 在 Mac 上,我只使用 Fuse,而 git 在那里就像一个魅力。另一方面,在 Windows 上,我一直在尝试 Expandrive,但出现权限错误。
        猜你喜欢
        • 2012-08-11
        • 1970-01-01
        • 2011-06-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-12
        相关资源
        最近更新 更多