Ответ 1
Кажется, проблема связана с некоторыми услугами, такими как sidekiq. Запуск sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production
выводит все проблемы с конфигурацией.
Я запустил сервер gitlabhq rails на виртуальной машине, выполнив 1-6 шагов из этого учебника https://github.com/gitlabhq/gitlab-recipes/blob/master/install/centos/README.md и запустив команду сервера rails sudo -u git -H bundle exec rails s -e production
. После этого я создал пользователя, используя инструменты администратора и создал новый проект под этим пользователем. Затем я пытаюсь подтолкнуть существующий проект к этому репо, как всегда. Но на последнем шаге git push origin master
выходит из строя с ошибкой
[удаленный отказ] master → master (отклонение до приема)
Дополнительная информация:
1) Я не активировал пользователя (владельца проекта) по ссылке активации электронной почты, потому что я не настроил службу сообщений на стороне сервера, и я не нашел инструкции, как это сделать в этом руководстве.
2) Сервер Gitlab генерирует подсказки о том, как перенаправить проект на репо, а в пути нет repositories/
. Я имею в виду, что он генерирует [email protected]:user/repo.git
вместо [email protected]:repositories/user/repo.git
, который является правильным.
3) Когда я попытался отладить его, я открыл pre-receive
script внутри repo на сервере и попытался вывести переменные (их 3): refs = ARGF.read
, key_id = ENV['GL_ID']
и repo_path = Dir.pwd
и найден, что key_id всегда пуст. Может быть, проблема здесь... Если да, пожалуйста, дайте мне советы о том, как это исправить. Благодаря
Кажется, проблема связана с некоторыми услугами, такими как sidekiq. Запуск sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production
выводит все проблемы с конфигурацией.
GitLab по умолчанию помечает master
ветвь как protected
(см. Раздел Protecting your code
в https://about.gitlab.com/2014/11/26/keeping-your-code-protected/ почему). Если так в вашем случае, то это может помочь:
Откройте ваш проект> Настройки [> вкладка Репозиторий] и перейдите в "Защищенные ветки", выберите "Разработчики могут нажать" и попробуйте снова.
через https://gitlab.com/gitlab-com/support-forum/issues/40
Для версии 8.11 и выше с инструкциями здесь: https://docs.gitlab.com/ee/user/project/protected_branches.html#restricting-push-and-merge-access-to-termin-users
Следующая проблема решена на моей локальной машине:
О. Во-первых, убедитесь, что вы используете правильные данные для входа в систему для подключения к Bitbucket Server (т.е. Имя пользователя/пароль/ключ SSH, который принадлежит вам)
B. Затем убедитесь, что имя/адрес электронной почты правильно заданы в вашей локальной конфигурации Git: Установите локальную конфигурацию Git для учетной записи, под которой вы пытаетесь нажать (проверка подтверждает, что вы являетесь тем человеком, который зафиксировал файлы) * Обратите внимание, что это чувствительно к регистру, как для имени, так и для адреса электронной почты * Это также чувствительно к пробелам - некоторые учетные записи компании имеют дополнительные пробелы/символы в своем имени, например. " Contractor/space space(LDN)
". Вы должны включить в свою конфигурацию то же количество пробелов, что и на Bitbucket Server. Проверьте это в блокноте, если застряли.
C. Если вы использовали не ту учетную запись, просто измените учетные данные своей учетной записи (имя пользователя/пароль/ключ SSH) и повторите попытку.
D. Иначе, если ваша локальная конфигурация неверна, вам нужно будет изменить ее
Для MAC
open -a TextEdit.app ~/.gitconfig
ПРИМЕЧАНИЕ. Вам придется исправить старые коммиты, которые вы пытались нажать.
Изменить свой последний коммит:
> git commit --amend --reset-author
<save and quit the commit file text editor that opens, if Vim then
:wq to save and quit>
Попробуйте повторить ваши коммиты:
> git push
У вас может не быть доступа разработчика к ветке проекта или мастера. Вам нужен доступ для разработчиков, чтобы активировать новую работу.
Новая работа означает новые ветки и фиксации.
Возможно, это не так, но это было решением моей ошибки "pre-receive hook declined":
Есть несколько репозиториев, которые допускают модификации только через Запрос Pull. Это означает, что вы должны
Вам нужно добавить свой ssh-ключ в свою учетную запись git, если она выдает ошибку, а затем удалить предыдущий ключ ssh и создать новый ключ ssh, а затем добавить.
Я решил эту проблему, изменив remote 'origin' url
с http
на протокол git
в .git/config
Зайдите в Настройки проекта → Крючки → (Под) Предварительно полученные крючки
Отключить cp требовать ссылки на проблему в коммитах