在远程服务器中,我设置了一个接收后的钩子,以便对我的存储库进行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

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

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

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


当前回答

我认为问题可能是文件夹的所有权,所以将其设置为当前用户的所有权

sudo chown -R your_login_name /path/to/folder
You can find the solution [here][1]

其他回答

git reset --hard

为我工作

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

确保有问题的文件没有在其他应用程序中打开(我用Excel有这个)!

有些文件是写保护的,即使是git也不能重写它。修改文件夹权限以允许写入,例如sudo chmod 775 foldername

然后执行

git pull 

再一次

我也遇到了同样的问题,但上面的解决方案都不适合我。我删除了有问题的文件夹。然后:

git reset --hard

删除任何残留文件以清理git状态,然后做:

git pull

它终于起作用了。

注意:例如,如果文件夹是包含构建文件的公用文件夹,请记住重新构建文件