Назад | Перейти на главную страницу

Git clone работает нормально, но git push - нет

Я создал тестовое репозиторий git на сервере Git:

/var/cache/git/username/myGitRepo.git

Это «голый» репозиторий git. Право собственности на файлы принадлежит этому пользователю с именем пользователя. Я могу клонировать вышеуказанный репозиторий Git на другом компьютере с Windows.

git clone git://myhost/var/cache/git/username/myGitRepo.git

Репо клонирует правильно. Затем я могу выполнить локальные коммиты и попытаться отправить изменения обратно на свой сервер Git:

git push origin master

Но это дает ошибку разрешения на сервере:

fatal: remote error: access denied or repository not exported: /git/username/myGitRepo.git

Я добавил волшебный файл 'git-daemon-export-ok'в каталоге репо. Но я продолжаю получать указанную выше ошибку.

Я даже установил chmod к 777 из /var/cache/git/username/myGitRepo.git

Получение такой же ошибки.

Git remote -v выдает следующий вывод.

$ git remote -v
origin  git://myhost/git/username/myGitRepo.git (fetch)
origin  git://myhost/git/username/myGitRepo.git (push)

Кто-нибудь может помочь мне решить эту ошибку?

Из коробки стандартный git-daemon не позволяет вам push в репозитории. На странице руководства говорится:

Это идеально подходит для обновлений только для чтения, т. Е. Извлечения из репозиториев git.

Если вы действительно хотите включить анонимный push (и действительно, вы этого не сделаете; просто используйте ssh), вам необходимо включить receive-pack сервис, который по умолчанию отключен (потому что это плохая идея). Опять же, со страницы руководства ( СЕРВИСЫ раздел):

приемная упаковка

Это обслуживает клиентов git send-pack, разрешая анонимный push. По умолчанию он отключен, так как в протоколе нет аутентификации. (другими словами, любой может поместить в репозиторий что угодно, включая удаление ссылок).

В смелый это мое. Вы можете включить эту службу глобально, передав --enable=receive-pack параметр командной строки или для каждого репозитория, задав daemon.receivepack к true в конфигурации git вашего репозитория.