Ответ 1
Если вам нужно отключить файл, вы должны иметь разрешение "w" для каталога, в котором находится файл, а не для файла...
На удаленном сервере у меня установлен пост-прием, чтобы сделать 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
Но другие файлы с одинаковым владельцем и теми же разрешениями дают мне эту ошибку.
В другом локальном репозитории для другого веб-сайта у меня есть файлы с именем пользователя локальной машины в качестве владельца, а когда я нажимаю на удаленный сервер, он уважает владельца удаленных серверов и работает как шарм.
Очевидно, что это ошибка, связанная с разрешениями, но я не могу найти способ ее исправить, любые предложения?
Если вам нужно отключить файл, вы должны иметь разрешение "w" для каталога, в котором находится файл, а не для файла...
sudo chmod -R ug+w .;
Эта команда исправит проблему. Это дает права на запись в папку.
Если вы используете какую-либо IDE, скорее всего, проблема в том, что файл использовался каким-то процессом. Как и ваш tomcat, вы можете использовать файл. Попытайтесь определить этот конкретный процесс и закрыть его. Это должно решить вашу проблему.
У меня была та же самая проблема, и ни одно из вышеупомянутых решений не работало для меня. Я удалил оскорбительную папку. Затем:
git reset --hard
Удалил все устаревшие файлы, чтобы очистить состояние git, затем сделал:
git pull
Наконец-то это сработало.
ПРИМЕЧАНИЕ. Если папка была, например, общедоступной папкой с файлами сборки, не забудьте перестроить файлы
FWIW - У меня была аналогичная проблема, и я не уверен, что это облегчило ее (за пределами разрешающего мода): Закрытие Eclipse, использующее ветвь с этой проблемой.
Это старый вопрос, но это может помочь пользователям Mac.
Если вы копируете файлы из Time Machine вручную, а не восстанавливаете их через Time Machine, он добавит ACLs ко всему, что может испортить ваши права.
Например, раздел в этой статье, в котором говорится, что "Как исправить права на файлы Mac OS X" показывает, что "каждый" имеет пользовательский интерфейс разрешений, которые все испортили:
Вам нужно удалить ACL из этих каталогов/файлов. Этот ответ Суперпользователя входит в него, но вот команда:
sudo chmod -RN .
Затем вы можете убедиться, что ваши каталоги и файлы имеют соответствующие разрешения. Я использую 750
для каталогов и 644
для файлов.
Я получаю эту ошибку и другие странные ошибки git, когда у меня работает сервер (в Intellij). Остановка сервера и повторная попытка команды git часто фиксируют его для меня.
git reset --hard
Работал для меня
Я думаю, что проблема может быть связана с правами собственности на папку, поэтому установите ее для текущего пользователя.
sudo chown -R your_login_name /path/to/folder
Вы можете найти решение [здесь] [1] Некоторые файлы защищены от записи, что даже 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
и появится сообщение об ошибке "denied".
Потянув, возможно, создал локальные изменения.
Добавьте свой неотслеживаемый файл:
мерзавец добавить.
Копить изменения.
мерзавец
Отбросьте локальные изменения.
Git Stash Drop
Потяните с разрешением sudo
sudo git pull удаленная ветка