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 143

11 ответов:

когда вам нужно разорвать связь с файлом, у вас должно быть разрешение " w " для каталога, в котором находится файл, а не для файла...

sudo chmod -R ug+w .;

эта команда устранит проблему. Она дает разрешения на запись в папку.

Если вы используете любой IDE скорее всего проблема в том, что файл используется другим процессом. Например, ваш tomcat может использовать файл. Попробуйте определить этот конкретный процесс и закрыть его. Это должно решить вашу проблему.

у меня была такая же проблема и ни одно из решений выше работал для меня. Я удалил оскорбительную папку. Затем:

git reset --hard

удалил все затяжные файлы, чтобы очистить статус git, а затем сделал:

git pull

это, наконец, сработало.

примечание: если папка была, например, общей папкой с файлами сборки, не забудьте перестроить файлы

FWIW-у меня была аналогичная проблема, и я не уверен, что это облегчило ее (за пределами разрешения mod): закрытие Eclipse, которое использовало ветку с этой проблемой.

Это старый вопрос, но это может помочь пользователям Mac.

Если вы копируете файлы из Time Machine вручную, а не восстанавливаете их через Time Machine, он добавит ACLs ко всему, что может испортить ваши разрешения.

например, в разделе в этой статье что говорит "Как исправить разрешения на файлы Mac OS X "показывает, что" все " имеют пользовательские разрешения, что все портит вверх:

Bad permissions, from http://dreamlight.com/how-to-fix-mac-os-x-file-permissions

вам нужно удалить ACL из этих каталогов / файлов. это ответ суперпользователя входит в него, но вот команда:

sudo chmod -RN .

затем вы можете убедиться, что ваши каталоги и файлы имеют соответствующие разрешения. Я использую 750 для каталогов и 644 для файлов.

Я получаю эту ошибку и другие странные ошибки git, когда у меня работает сервер (в Intellij). Остановка сервера и повторная попытка команды git часто исправляет это для меня.

git reset --hard

работал на меня

некоторые файлы защищены от записи, что даже 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

вы можете найти решение здесь