Git push error: не удается разорвать старую связь (отказано в разрешении)
на удаленном сервере у меня есть крюк post-receive, настроенный для того, чтобы сделать проверку 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
но другие файлы с точно таким же владельцем и теми же разрешениями, дайте мне эту ошибку.
в другом локальном репозитории для другого веб-сайта у меня есть файлы с именем пользователя моей локальной машины в качестве владельца, и когда я нажимаю на удаленный сервер, он уважает владельца удаленного сервера файлов и работает как шарм.
очевидно, что это ошибка, связанная с разрешениями, но я не могу найти способ ее исправить, какие-либо предложения?
11 ответов:
когда вам нужно разорвать связь с файлом, у вас должно быть разрешение " w " для каталога, в котором находится файл, а не для файла...
Если вы используете любой IDE скорее всего проблема в том, что файл используется другим процессом. Например, ваш tomcat может использовать файл. Попробуйте определить этот конкретный процесс и закрыть его. Это должно решить вашу проблему.
у меня была такая же проблема и ни одно из решений выше работал для меня. Я удалил оскорбительную папку. Затем:
git reset --hard
удалил все затяжные файлы, чтобы очистить статус git, а затем сделал:
git pull
это, наконец, сработало.
примечание: если папка была, например, общей папкой с файлами сборки, не забудьте перестроить файлы
FWIW-у меня была аналогичная проблема, и я не уверен, что это облегчило ее (за пределами разрешения mod): закрытие Eclipse, которое использовало ветку с этой проблемой.
Это старый вопрос, но это может помочь пользователям Mac.
Если вы копируете файлы из Time Machine вручную, а не восстанавливаете их через Time Machine, он добавит ACLs ко всему, что может испортить ваши разрешения.
например, в разделе в этой статье что говорит "Как исправить разрешения на файлы Mac OS X "показывает, что" все " имеют пользовательские разрешения, что все портит вверх:
вам нужно удалить ACL из этих каталогов / файлов. это ответ суперпользователя входит в него, но вот команда:
sudo chmod -RN .
затем вы можете убедиться, что ваши каталоги и файлы имеют соответствующие разрешения. Я использую
750
для каталогов и644
для файлов.
Я получаю эту ошибку и другие странные ошибки git, когда у меня работает сервер (в Intellij). Остановка сервера и повторная попытка команды git часто исправляет это для меня.
некоторые файлы защищены от записи, что даже git не может перезаписать его. Измените разрешение папки, чтобы разрешить запись, например, sudo chmod 775 foldername
а потом ГИТ тянуть снова
также не забудьте проверить разрешение самого корневого каталога!
вы можете найти:
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
и появится ошибка "отказано в разрешении".
Я думаю, что проблема может быть с собственностью на папку, поэтому установите ее в текущее владение пользователя
sudo chown-R your_login_name / path/to / folder
вы можете найти решение здесь