На удаленном сервере у меня установлен хук post-receive, чтобы сделать git checkout моего репозитория:
#!/bin/sh
GIT_WORK_TREE=/var/www/<website> git checkout -f
Но когда я выполняю push с моего локального компьютера в 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
Но другие файлы с точно таким же владельцем и такими же правами дают мне эту ошибку.
В другом локальном репозитории для другого веб-сайта у меня есть файлы с именем пользователя на локальном компьютере в качестве владельца, и когда я отправляю на удаленный сервер, он уважает владельца файлов на удаленном сервере и работает как чудо.
Очевидно, это похоже на ошибку, связанную с разрешениями, но я не могу найти способ ее исправить, какие-либо предложения?
источник
sudo chmod -R g+w
папки с ошибками.mv
действия, чем просто перезаписывают.ls -l
дисплея указывает тип файла и не связан с разрешениями. Остальные девять символов находятся в трех наборах, каждый из которых представляет класс разрешений в виде трех символов. Первый набор представляет класс пользователя. Второй набор представляет класс группы. Третий набор представляет класс других.g+w
В CHMOD дает набор группы (g
параметр) разрешение записи (w
параметр)Эта команда исправит проблему. Это дает права на запись в папку.
источник
Если вы используете любую IDE, скорее всего, проблема в том, что файл использовался каким-то процессом. Как ваш кот может использовать файл. Попробуйте определить этот конкретный процесс и закрыть его. Это должно решить вашу проблему.
источник
У меня была та же самая проблема, и ни одно из вышеупомянутых решений не работало для меня. Я удалил оскорбительную папку. Затем:
Удалил все устаревшие файлы, чтобы очистить состояние git, затем сделал:
Наконец-то это сработало.
ПРИМЕЧАНИЕ. Если папка была, например, общей папкой с файлами сборки, не забудьте перестроить файлы
источник
Я думаю, что проблема может быть связана с правами собственности на папку, поэтому установите ее для текущего пользователя.
Вы можете найти решение [здесь] [1]источник
FWIW - у меня была похожая проблема, и я не уверен, что это облегчило ее (за пределами мода разрешения): закрытие Eclipse, который использовал ветку с этой проблемой.
источник
Это старый вопрос, но это может помочь пользователям Mac.
Если вы копируете файлы из Time Machine вручную, вместо того, чтобы восстанавливать их через Time Machine, он добавит списки ACL ко всему, что может испортить ваши разрешения.
Например, в разделе этой статьи, в котором говорится «Как исправить разрешения для файлов Mac OS X», показано, что «все» имеют настраиваемые разрешения, что все портит:
Вам необходимо удалить ACL из этих каталогов / файлов. Этот ответ суперпользователя входит в это, но вот команда:
sudo chmod -RN .
Затем вы можете убедиться, что ваши каталоги и файлы имеют соответствующие разрешения. Я использую
750
для каталогов и644
для файлов.источник
Я получаю эту ошибку и другие странные ошибки git, когда у меня работает сервер (в Intellij). Остановка сервера и повторная попытка команды git часто исправляют это для меня.
источник
Работал для меня
источник
Сделал работу за меня.
источник
Потянув, возможно, создал локальные изменения.
Добавьте свой неотслеживаемый файл:
Копить изменения.
Отбросьте локальные изменения.
Потяните с разрешением sudo
источник
Некоторые файлы защищены от записи, что даже Git не может перезаписать его. Измените разрешение папки, чтобы разрешить запись, например, sudo chmod 775 foldername
И затем выполнить
очередной раз
источник
Также не забудьте проверить разрешение самого корневого каталога!
Вы можете найти:
и появится сообщение об ошибке «Отказано в доступе».
источник