Разрешение / владелец проблема с нажатием Git при редактировании непосредственно из репо?
У меня есть веб-интерфейс для развертывания скриптов из нашего репозитория в Github на нашем работающем сервере. Веб-интерфейс просто запускает скрипт bash с некоторыми командами git. Если я делаю изменения локально, нажимаю на репо, а затем запускаю скрипт bash, чтобы вытащить репо, чтобы жить, он работает нормально. Однако, если я внесу изменения непосредственно в репо (через веб-интерфейс Github), у меня возникнут проблемы с перемоткой вперед / блокировкой.
Вот шаги, которые я предпринимаю:
- Внесите изменения в файл в репозитории Github
Запустите bash-скрипт (как apache) через Интернет с живого сервера, который пытается выполнить git push / pull. Получите эти проблемы:
PUSH To git@github.com:name/name.git ! [rejected] master -> master (non-fast-forward) error: failed to push some refs to 'git@github.com:name/name.git' To prevent you from losing history, non-fast-forward updates were rejected Merge the remote changes before pushing again. See the 'Note about fast-forwards' section of 'git push --help' for details. PULL From github.com:name/name branch master -> FETCH_HEAD error: unable to unlink old 'includes/footer.inc' (Permission denied) Updating 8f6d922..d1eba9d Updating 8f6d922..d1eba9d
SSH в качестве root, попробуйте push / pull, и все работает нормально.
Идеи о том, почему этот метод не работает из Apache?
2 ответа
Поскольку файлы в вашей локальной копии хранилища не принадлежат пользователю веб-сервера. По крайней мере, некоторые из них, вероятно, принадлежат root
, учитывая, что вы push
Эд и pull
Эд как root
,
chown -R
твой друг.
Толчок терпит неудачу, потому что у вас есть расходящаяся история. Вам необходимо объединить изменения в вашем локальном репозитории с текущей удаленной веткой, а затем передать этот результат в Github. Смотрите ProGit для подробностей этой операции.
Тяга терпит неудачу, потому что, как сказал Мо, у тебя проблемы с разрешениями.