Помилка натискання Git попереднього прийому відхилена


167

Я запустив сервер rail gitlabhq на віртуальній машині, виконуючи 1-6 кроків із цього підручника https://github.com/gitlabhq/gitlab-recipes/blob/master/install/centos/README.md і запускає сервер рейлів, виконуючи команду sudo -u git -H bundle exec rails s -e production. Після цього я створив користувача, використовуючи інструменти адміністратора та створив новий проект під цим користувачем. Тоді я намагаюся підштовхнути існуючий проект до цього репо, як завжди. Але на останньому кроці git push origin masterвиходить з ладу помилка

[віддалений відхилений] master -> master (гак попереднього отримання відхилений)

Додаткова інформація:

1) Я не активував користувача (власника проекту) за посиланням активації електронної пошти, оскільки я не налаштував поштову службу на стороні сервера і не знайшов інструкцій, як це зробити в цьому посібнику.

2) Сервер Gitlab генерує підказки, як підштовхнути проект до репо, і до цього немає repositories/шляху. Я маю на увазі, що це генерує git@mygitlabhost:user/repo.gitзамість цього git@mygitlabhost:repositories/user/repo.gitправильне.

3) Коли я намагався налагодити її, я відкрив pre-receiveсценарій всередині репо на сервері і спробував вихідний змінними (є три з них): refs = ARGF.read, key_id = ENV['GL_ID']і repo_path = Dir.pwdта виявив, що KEY_ID завжди порожній. Можливо, проблема тут ... Якщо так, будь ласка, дайте мені пропозиції, як це виправити. Дякую


15
Я клянусь, у кожній команді з розробки програмного забезпечення є щонайменше одна людина, яка щодня прокидається і думає, як зробити життя інших розробників набагато складніше.
samayo

Схоже, є дуже популярна відповідь, яка повинна працювати для більшості людей. У моєму випадку, однак, те саме повідомлення надійшло від Git Hub, коли випадково з'явився ще один натиск з іншої машини при спробі натиснути.
Hack-R

Відповіді:


230

GitLab за замовчуванням відміток masterгалузі як protected(див частину Protecting your codeв https://about.gitlab.com/2014/11/26/keeping-your-code-protected/ чому). Якщо у вашому випадку це так, то це може допомогти:

Відкрийте проект> Налаштування> Репозиторій та перейдіть до «Захищених гілок», знайдіть у списку «головну» гілку та натисніть «Зняти захист» та повторіть спробу.

через https://gitlab.com/gitlab-com/support-forum/isissue/40

Для версії 8.11 та вище, як тут: https://docs.gitlab.com/ee/user/project/protected_branches.html#restricting-push-and-merge-access-to-certain-users


8
Користувацький інтерфейс трохи змінився: Після проекту "Налаштування" натисніть на вкладку "Репозиторій". Тоді "Захищені гілки"
Донн Лі

Тож у мене були ті ж проблеми, що були в ОП, і це рішення спрацювало на мене, дякую! Але зараз мені цікаво, чому? Я деякий час користувався gitlab і раптом у мене це робиться? Що змінилося?
Ендрю Ламарра

2
Оскільки GitLab 8.11параметри трохи змінилися, перевірте тут
Arghya C

стикається з тим же питанням. Тут я навіть не в змозі просунути іншу гілку. Я натискаю на це вперше.
Сантош Кадам

1
я видалено незахищеним, але що буде зараз? хтось інший у світі може працювати над цим репо?
Flutterer

14

Після вирішення проблеми на моїй локальній машині:

A. Спочатку переконайтеся, що ви використовуєте правильний журнал даних для підключення до сервера Bitbucket (тобто ім’я користувача / пароль / ключ SSH, який належить вам) 

B. Потім переконайтеся, що ім’я / адреса електронної пошти правильно встановлено у вашій локальній конфігурації Git: Встановіть локальну конфігурацію Git для облікового запису, під який ви намагаєтесь натиснути (чек підтверджує, що ви є особою, яка вчинила файли) * Зауважте, що це чутливе до регістру, як для імені, так і для адреси електронної пошти * Це також залежно від простору - деякі облікові записи компанії мають додаткові пробіли / символи у своєму імені, наприклад. " Contractor/ space space(LDN)". Потрібно включити ту саму кількість пробілів у вашій конфігурації, що і на Bitbucket Server. Перевірте це в Блокноті, якщо він застряг.

C. Якщо ви використовували неправильний обліковий запис, просто переключіть облікові дані облікового запису (ім’я користувача / пароль / ключ SSH) і спробуйте натиснути ще раз.

D. В іншому випадку, якщо ваша локальна конфігурація неправильна, вам потрібно буде змінити її

Для MAC

open -a TextEdit.app ~/.gitconfig

ПРИМІТКА. Вам доведеться виправити старі комітети, які ви намагалися натиснути.

  1. Змініть останнє зобов’язання:

    > git commit --amend --reset-author
    
      
    <save and quit the commit file text editor that opens, if Vim then
    :wq to save and quit>
    
  2. Спробуйте повторно натиснути на свої зобов'язання:

    > git push
    

12

У моєму випадку моя команда веде до створення репо (репо було порожнім) і призначає мене як розробника, тож коли я натискав на код безпосередньо, щоб засвоїти помилку, з якою зіткнувся. ! [remote rejected] master -> master (pre-receive hook declined)Як це було встановлено, він призначив мене як супроводжувача, щоб я зміг підштовхнути код безпосередньо до ведучого.


10

Здається, проблема полягає в деяких послугах, наприклад, sidekiq. Запуск sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=productionвидає всі проблеми з конфігурацією.



2

Можливо, у вас немає доступу розробника до проекту чи головного відділення. Вам потрібен доступ до розробників, щоб підштовхнути нову роботу.

Нова робота, що означає нові галузі та комісії.


2

Можливо, це не так, але це було рішенням моєї помилки " попередньо отриманий гачок відхилений ":

Є деякі сховища, які дозволяють змінювати лише Pull Request . Це означає, що вам доведеться

  1. Створіть нову гілку, взявши за основу гілку, до якої ви хочете підштовхнути свої зміни.
  2. Введіть і змініть свої зміни до нової гілки.
  3. Відкрийте запит на отримання об'єднання своєї філії з оригіналом.

0

Вам потрібно додати ключ ssh до свого облікового запису git, якщо він видає помилку, тоді видаліть попередній ключ ssh та створіть новий ключ ssh, а потім додайте.


Це не допомогло. :( Тестовано для обох облікових записів - root та myuser на vm та локальній машині, відповідно
Hroft

перевірити git remote -v, додано твоє git repo чи ні?
Хардік Хардія

Виводить 'git remote -v': origin git @ mygitlabhost: сховища / користувач / repo.git (fetch) походження git @ mygitlabhost: сховища / користувач / repo.git (push)
Hroft

Якщо ви використовуєте розміщений gitlab, проблема, ймовірно, з їх боку. Просто спробуйте знову через кілька хвилин.
Ерік Аронесті

0

Я вирішив цю проблему шляхом зміни remote 'origin' urlвід httpдо gitпротоколу в.git/config


0

Перейдіть до Налаштування проекту -> Гачки -> (Під) Гачки попереднього прийому

Для відключення cp потрібна посилання на видачу у комітах


0

Я наткнувся на ту саму помилку, використовуючи BitBucket. У мене було місцеве репортаж Git, я хотів створити резервну копію в Інтернеті, тому я створив нове сховище зі свого облікового запису BitBucket (за допомогою веб-інтерфейсу).

Після запуску git remote add origin git@bitbucket.org:StatMarianne/<a private repo>.gitя побіг git push origin masterбезрезультатно (я зазвичай не використовую опцію -u,git push тому що я не проти вводити повні назви репо і гілок при натисканні та потягуванні).

Прочитана помилка:

remote: You're not allowed to write to this repository.
To bitbucket.org:StatMarianne/<a private repo>.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'git@bitbucket.org:StatMarianne/<a private repo>.git'

Але мій місцевий відділ успішно висунувся, коли я біг git push -u origin master(дотримуючись суворо інструкцій BitBucket).

Мені це дивно, оскільки -u ( --set-upstream) повинен лише "додати посилання вище (за відстеженням) ..." Так чи інакше.


-1

Я зіткнувся з тією ж проблемою, це тому, що я натискаю свій код безпосередньо у головній галузі, і я не маю на це прав. Тож я пересуваю свій код у новій гілці і після цього я створив запит на витяг, щоб об'єднатись з master.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.