Git push error: Не удалось отсоединить старый (Permission denied)

На удаленном сервере у меня установлен пост-прием, чтобы сделать git checkout моего репозитория:

#!/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

Но другие файлы с одинаковым владельцем и теми же разрешениями дают мне эту ошибку.

В другом локальном репозитории для другого веб-сайта у меня есть файлы с именем пользователя локальной машины в качестве владельца, а когда я нажимаю на удаленный сервер, он уважает владельца удаленных серверов и работает как шарм.

Очевидно, что это ошибка, связанная с разрешениями, но я не могу найти способ ее исправить, любые предложения?

Ответ 1

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

Ответ 2

sudo chmod -R ug+w .;

Эта команда исправит проблему. Это дает права на запись в папку.

Ответ 3

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

Ответ 4

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

git reset --hard

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

git pull

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

ПРИМЕЧАНИЕ. Если папка была, например, общедоступной папкой с файлами сборки, не забудьте перестроить файлы

Ответ 5

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

Ответ 6

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

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

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

Плохие разрешения, от http://dreamlight.com/how-to-fix-mac-разрешения -os-х файл

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

sudo chmod -RN .

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

Ответ 7

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

Ответ 8

git reset --hard

Работал для меня

Ответ 9

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

sudo chown -R your_login_name /path/to/folder
Вы можете найти решение [здесь] [1]

Ответ 10

Некоторые файлы защищены от записи, что даже Git не может перезаписать его. Измените разрешение папки, чтобы разрешить запись, например, sudo chmod 775 foldername

А потом мерзавец тянуть снова

Ответ 11

Также не забудьте проверить разрешение самого корневого каталога!

Вы можете найти:

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

и появится сообщение об ошибке "denied".

Ответ 12

Потянув, возможно, создал локальные изменения.

Добавьте свой неотслеживаемый файл:

мерзавец добавить.

Копить изменения.

мерзавец

Отбросьте локальные изменения.

Git Stash Drop

Потяните с разрешением sudo

sudo git pull удаленная ветка