在远程服务器中,我设置了一个接收后的钩子,以便对我的存储库进行git检出:

#!/bin/sh
GIT_WORK_TREE=/var/www/<website> git checkout -f

但是当我从本地机器推送到服务器中的git存储库时,我得到了以下错误消息:

remote: error: unable to unlink old '<file>' (Permission denied)

这将出现多次,几乎每个文件都有一个错误消息。

但是我有一个README.txt文件,我可以使用git更改,以下是它的权限:

-rw-r--r--  1 <serverusername>  <serverusername>  2939 Aug  2 10:58 README.txt

但是其他具有完全相同所有者和相同权限的文件,会给我这个错误。

在另一个网站的另一个本地存储库中,我有我的本地机器用户名作为所有者的文件,当我推送到远程服务器时,它尊重文件的远程服务器所有者,就像一个魅力。

显然这似乎是一个权限相关的错误,但我找不到一种方法来修复它,有什么建议吗?


当前回答

这是一个老问题,但这可能会对Mac用户有所帮助。

如果你手动从“时间机器”复制文件,而不是通过“时间机器”恢复文件,它会给所有文件添加acl,这可能会打乱你的权限。

例如,本文中“如何修复Mac OS X文件权限”一节显示“每个人”都有自定义权限,这就把事情搞砸了:

您需要从这些目录/文件中删除acl。这个超级用户的答案是它,但下面是命令:

sudo chmod -RN。

然后,您可以确保您的目录和文件具有适当的权限。我将750用于目录,644用于文件。

其他回答

这是一个老问题,但这可能会对Mac用户有所帮助。

如果你手动从“时间机器”复制文件,而不是通过“时间机器”恢复文件,它会给所有文件添加acl,这可能会打乱你的权限。

例如,本文中“如何修复Mac OS X文件权限”一节显示“每个人”都有自定义权限,这就把事情搞砸了:

您需要从这些目录/文件中删除acl。这个超级用户的答案是它,但下面是命令:

sudo chmod -RN。

然后,您可以确保您的目录和文件具有适当的权限。我将750用于目录,644用于文件。

在windows上最简单的方法:

1)进入任务管理器

2)结束文件资源管理器任务

3)在任务管理器中,进入“文件”页签,然后点击“运行新任务”

4)在弹出窗口中写入explorer.exe

问题解决。

当你必须解除文件链接时,你必须对目录有权限'w',其中文件是,而不是文件…

拉扯可能会造成局部变化。

添加您的未跟踪文件:

转到添加 。

储备的变化。

git 存储

删除本地更改。

Git藏匿点

在sudo的允许下拉

须藤git拉远程分支

FWIW -我有一个类似的问题,我不确定这是否缓解了它(超出权限mod):关闭Eclipse,使用这个问题的分支。