Как исправить разрешение, запрещенное для каталога .git/при выполнении git push?
Я установил репозиторий git на моем сервере. Создал нового пользователя git. Мои репозитории находятся в /srv/git/example.git
. Я смог git remote add origin [email protected]/srv/git/example.git
, затем добавил и внес свои изменения.
Однако, когда я попробовал git push origin master
, это не удалось:
fatal: невозможно создать временный файл: разрешено denied 'и' fatal: ошибка записи файла sha1: недопустимый аргумент '
На сервере я побежал:
sudo chown -R git:git /srv/git/`
Это фиксировало мою проблему, но мне интересно, правильно ли это делать?
Ответы
Ответ 1
На сервере я запустил sudo chown -R git: git/srv/git/- это исправило мою проблему, но мне интересно, правильно ли это делать?
Совершенно верно. Ранее проблема заключалась в том, что пользователь git, который вы входите в систему через SSH, не смог записать в репозиторий.
В зависимости от ваших потребностей вы можете рассмотреть различные комбинации пользователей и SSH-ключей или одну из многих дополнительных программ (гитолит и т.д.), которые могут использоваться для более точного контроля доступа.
Ответ 2
Во-первых, исправьте разрешения файлов в удаленном каталоге .git
, например.
sudo chmod -R ug+w /var/www/.git
sudo chown -R git:git /var/www/.git
или root:root
, если вы хотите назначить членов группы root
для push-доступа.
Затем репозиторий git на целевом хосте должен быть установлен как общий, поэтому необходимо выполнить следующую команду на удаленном компьютере:
git config core.sharedRepository group