在远程服务器中,我设置了一个接收后挂钩,以便对我的存储库进行 git 签出:
#!/bin/sh
GIT_WORK_TREE=/var/www/<website> git checkout -f
但是当我从本地计算机推送到服务器中的 git 存储库时,我收到以下错误消息:
remote: error: unable to unlink old '<file>' (Permission denied)
这种情况会出现多次,几乎每个文件都会出现一条错误消息。
但是我有一个可以使用 git 更改的 README.txt 文件,以下是其权限:
-rw-r--r-- 1 <serverusername> <serverusername> 2939 Aug 2 10:58 README.txt
但是具有完全相同的所有者和相同权限的其他文件,给我这个错误。
在另一个网站的另一个本地存储库中,我的文件以我的本地计算机用户名作为所有者,当我推送到远程服务器时,它尊重文件的远程服务器所有者,并且像魅力一样工作。
显然这似乎是一个与权限相关的错误,但我找不到解决方法,有什么建议吗?
当您必须取消链接文件时,您必须拥有目录(文件所在目录)的“w”权限,而不是文件的权限...
sudo chmod -R ug+w .;
此命令可以解决该问题。它授予文件夹写入权限。
sudo chown -R $USER:$USER .
为我完成了这项工作。
如果您使用任何 IDE,最有可能的问题是该文件被某个进程使用。就像您的 tomcat 可能正在使用该文件一样。尝试识别该特定进程并将其关闭。那应该可以解决你的问题。
我认为问题可能出在文件夹的所有权上,因此将其设置为当前用户所有权
sudo chown -R your_login_name /path/to/folder
您可以在[此处][1]找到解决方案
我遇到了同样的问题,以上解决方案都不适合我。我删除了有问题的文件夹。然后:
git reset --hard
删除所有残留文件以清理 git 状态,然后执行以下操作:
git pull
终于成功了。
注意:例如,如果该文件夹是包含构建文件的公共文件夹,请记住重建文件
FWIW - 我遇到了类似的问题,我不确定这是否可以缓解它(超出权限模式):关闭正在使用具有此问题的分支的 Eclipse。
还要记得检查根目录本身的权限!
您可能会发现:
drwxr-xr-x 9 not-you www-data 4096 Aug 8 16:36 ./
-rw-r--r-- 1 you www-data 3012 Aug 8 16:36 README.txt
-rw-r--r-- 1 you www-data 3012 Aug 8 16:36 UPDATE.txt
并且会弹出“权限被拒绝”错误。
有些文件是写保护的,即使是 git 也无法覆盖。更改文件夹权限以允许写入,例如sudo chmod 775 文件夹名称
然后执行
git pull
再次
当我运行服务器(在 Intellij 中)时,我收到此错误以及其他奇怪的 git 错误。 停止服务器并重新尝试 git 命令经常为我修复它。
git reset --hard
为我工作
拉动可能会造成局部变化。
添加您的未跟踪文件:
git 添加。
隐藏更改。
git 存储
删除本地更改。
git 隐藏掉落
使用 sudo 权限拉取
sudo git pull 远程分支
检查文件夹的权限后,744 没问题。我的 WordPress 网站上安装的 plugin 遇到了问题。该插件已经钩住了我怀疑的玉米工作。
用一个简单的
sudo it can fix the issue
sudo git pull origin master
你已经可以使用了。
就我而言,我必须向该文件夹的所有组成员授予读取、写入和执行权限。 这是因为 Git 用户是组成员而不是用户。
sudo chmod -R g=rwx <folder>
确保相关文件没有在其他应用程序中打开(我是用 Excel 打开的)!
Windows 上最简单的方法:
1)进入任务管理器
2)结束文件资源管理器任务
3)在任务管理器中,转到“文件”选项卡,然后单击“运行新任务”
4)在弹出窗口中写入explorer.exe
问题已解决。