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


206

Коли я намагаюся змінити зміни, які я здійснив, я отримую таку помилку ...

git.exe push -v --progress  "origin" iteration1:iteration1

remote: *********************************************************************
To ssh://git@mycogit/cit_pplus.git
! [remote rejected] iteration1 -> iteration1 (pre-receive hook declined)
error: failed to push some refs to 'ssh://git@mycogit/cit_pplus.git'

Що відбувається?


8
Що в попередньому прийомі hocokon mycogit?
грабувати майофф

Ви б не намагалися підштовхувати великі файли до github, чи не так?
Адам Ф

FYI: сьогодні всі мої колеги отримали це повідомлення про помилки, врешті-решт ми вирішили перезапустити наш скрипт-сервер, і це магічно виправлено. Ми поняття не маємо, в чому полягала проблема.
T_D

Відповіді:


125

Ви повинні запитати того, хто підтримує репо git@mycogit/cit_pplus.git.

Ваші зобов’язання були відхилені pre-receiveгаком цього репо (це налаштований користувачем сценарій, який призначений для аналізу вхідних комітетів і вирішення, чи є вони достатньо хорошими, щоб бути прийнятим до репо).

Також непогано попросити цю особу оновити гачок, щоб вона надрукувала причини відмови.

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


7
У моєму випадку BitBucket пройшов перевірку вмісту повідомлення про фіксацію, зіткнувшись із ним із квитками JIRA, який на той момент був офлайн.
Vítor Neil Avelino

1
так коли він став у мережі його фіксованим?
shareef

5
У моєму випадку це була невідповідність імені користувача, за допомогою якого були створені комісії та ім'я користувача в BitBucket. Мені не дозволено оновлювати ім'я користувача BitBucket, тому мені довелося скинути свої зобов’язання та повторити їх із оновленим іменем користувача. Ви можете оновити ім'я користувача git за допомогою цієї командиgit config user.name 'UpdatedUserName'
MM

3
У нашому випадку бітбукет не дозволяв нікому просуватися до цієї гілки.
Рамон Фінкен

У моєму випадку мені довелося знайти параметри репо в бітбукеті та відключити перевіряючий програму в налаштуваннях Hooks.
Сизони

78

Б'юсь у заклад, що ви намагаєтесь не швидко просуватися вперед, а гачок блокує його. Якщо це так, просто запустіть git pull --rebaseперед тим, як натиснути, щоб відновити локальні зміни на найновішій кодовій базі.


Це круто. Тепер я можу знову натискати і тягнути, але перед цим мені потрібно встановити вгору як git branch --set-upstream-to=origin/myBranch. +1 для вашої відповіді.
AlokeT

У новому сховищі я натиснув гілку (не головну), потім перезавантажив її і отримав помилку під час натискання. Я не знайшов веб-гачок. Я стратив git pull --rebase, довелося знову перезавантажитись і зміг штовхнути гілку. Нарешті я виявив, що моя філія стала захищеною.
CoolMind

60

Важливий розмір файлу. Існує обмеження ~ 120 Мб для одного файлу. У моєму випадку .gitignore за допомогою Visual Studio мав перелічений файл, але файл все-таки був скоєний. Використовуючи git cli, ми можемо отримати більш детальну інформацію про помилку.

Гак попереднього прийому відхилився в результаті великого файлу. В основному валідація поштовху.

Щоб вирішити це питання, я видалив останню комісію, використовуючи:

git reset --soft HEAD~1

Потім я виключив файл з фіксації.

Примітка: Використовуйте HEAD ~ N, щоб повернутися до N кількості попередніх комітетів. (тобто 3, 4) Завжди використовуйте перемикач --soft для підтримки змін у папці

сподіваюся, що це допомагає.


Це допомогло, оскільки моя проблема полягала в тому, що небажаний дамп-файл (розмір файлу 155 Мб) був висунутий (випадково).
Мехрдад Дастгір

1
Обмеження розміру файлу залежить від вашого хостинг-провайдера. У GitHub існує обмеження приблизно такого розміру, для інших він різниться, а самонаведений git, природно, не має таких обмежень.
1615903

1
що робити, якщо після відхилення натискання у вас вже є кілька комітетів? це мій випадок, у мене є небажаний великий файл (627 Мб) в одному з попередніх комітетів, перш ніж намагатися натиснути на repo
leeCoder

У мене файл CSV був завантажений випадково. Тож у моєму випадку помилка була пов’язана з цим.
tonhozi

Якщо у вас є кілька комісій, збільште індекс, щоб повернути голову назад до цього коміту. Наприклад, використовуйте HEAD ~ 3, щоб повернутися до трьох попередніх комітетів. Завжди використовуйте перемикач --soft для підтримки змін у папці.
озкарі

13

Це може бути тому, що у вас не було права доступу, щоб підштовхнути комісію до такої гілки, як master. Ви можете попросити обслуговуючого персоналу дати вам право надсилати коміти.


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


8

Я отримав це повідомлення, коли сервер GitLab зазнав деяких змін. Наступного дня натискання спрацювало чудово. У будь-якому випадку, як зазначали інші, проконсультуйтеся зі своїм технічним обслуговувачем.


1
Якраз була ця проблема, і я думаю, що GitLab вносив зміни. Дав 10 хвилин, і воно спрацювало. Я нічого не змінив.
woter324

Просто було також це питання. Для всіх, хто може захотіти перевірити, чи це так: status.gitlab.com
Renan Ferrari

5

У мене виникла ця проблема, коли я намагався об'єднати зміни з розміром файлу, більшим, ніж дозволяв віддалений сховище (у моєму випадку це GitHub)


2
У моєму випадку навіть після видалення файлу GitHub все ж скаржився ... але ця відповідь зробила трюк stackoverflow.com/questions/19573031/…
CodenameDuchess

5

Я зіткнувся з цим самим питанням.
Для мене це вирішило - перейти на іншу гілку, а потім повернутися до початкової.

Не впевнений, що було причиною підкреслення, але це вирішило це.


Я також не зміг просунутися до нової гілки
забоп


2

У випадку, якщо це комусь допоможе:

Перед тим, як запустити, у мене було порожнє репо, без головного відділення, щоб захистити його (у Gitlab) git push -u origin --all

  • Довелося бігати git push -u origin master першим,
  • тимчасово захистити головну гілку
  • натисніть на решту ( --all& --tags)

2

Я зіткнувся з тією ж помилкою, перевіривши, що я отримав доступ для розробників і не зміг опублікувати нову гілку. Додавання вищих прав доступу вирішило цю проблему. (Gitlab)


2

Я отримав цю помилку з GitHub gist. Я намагався натиснути на комісію з файлами в підкаталогах. Виявлено, що суть може мати лише файли в кореневому каталозі.


Зробив і це Виявляється, у репо був файл, "snippets\\csharp.json"який важко давав git на Windows.
Карл Уолш

2

Видаліть опцію захищеної гілки або дозвольте додаткові ролі, як-от розробники чи адміністратори, щоб дозволити цим користувачам, які відчувають цю помилку, робити злиття та натискання.


1

У моєму випадку у нас є гачки для повідомлень про фіксацію, наш серверний сценарій приймає зобов’язання, якщо вони мають спеціальний формат для повідомлення про фіксацію "<JIRA ID><Message>". Він (гак) відхиляє здійснення, якщо відповідний квиток Джира не існує або в повідомленні про фіксацію є якісь спеціальні символи. Я зіткнувся з цією помилкою, коли додаю /, [,> і т.д. у повідомлення про фіксацію, видаляючи це добре.


Ця відповідь навряд чи допоможе, оскільки оригінальний плакат (і будь-хто інший, хто відвідує в майбутньому) матиме інший сценарій, налаштований як гачок попереднього отримання.
aronisstav

1

Це насправді відбувається, коли YACC увімкнено на стороні сервера в BitBucket. YACC надає можливість для імен видань JIRA згадувати у повідомленні про виконання. Тому щоразу, коли ви щось зробите щонайменше, зберігайте свій номер JIRA у повідомленні про фіксацію, а потім ви можете додати власне повідомлення.


1

Я використовував GitKraken, і ми зробили локальну гілку, потім ми об'єднали в неї дві віддалені гілки, а потім спробували підштовхнути локальну гілку до початку. Це не працювало з тим же повідомленням про помилку.

Рішення було створити місцеве відділення і штовхати його першим до зародження , а потім виконати злиття.


1

Проблема: "PUSH Failed refs / head / - гак попереднього отримання відхилений"

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

PUSH Не вдалося відхилити / голова / - гак попереднього отримання відхилений

Тому спробували перевірити, чи те ж саме з іншими репо-проектами, і у них не виникло жодних проблем.

Виправити:

Мій колега зауважив, що коли ми клонували проект ще локально, розмір проекту становив 110 Мб. Тоді ми почали чистити гілки, які ми злили раніше, і активні гілки, які більше не потрібні. Після того, як очищення було зроблено для декількох відділень, ми зрозуміли, що розмір репо різко знизився з 2 ГБ до 120 МБ. Тоді ми спробували підштовхнути зміни до моєї гілки, і це спрацювало.


1

У моєму випадку у мене було нове сховище, натиснув гілку ("UCA-46", а не "master"), перезавантажив її, знов натиснув і отримав помилку. Жодних веб-гачків не існувало. Я виконаний git pull --rebaseяк @TentistMaster радив , повинен був знову і зміг натиснути гілку. Але це був дивний і важкий шлях.

Потім я побачив, що помилка натискання Git попередньо отримала гачок відхилена . Я виявив, що моя філія стала захищеною . Я зняв захист і можу знов натиснути.

введіть тут опис зображення


0

Це я отримав, коли намагався натиснути на екземпляр доку. Виявляється диск був повноцінним на моєму сервері.

Побіг: du -f

І результат був такий:

Filesystem      Size  Used Avail Use% Mounted on
udev            476M     0  476M   0% /dev
tmpfs           100M  4.4M   95M   5% /run
/dev/xvda1      7.8G  7.4G  8.9M 100% /

0

Для мене Авторизація на віддаленому сервері git вирішує проблему. введіть тут опис зображення


0

У моєму випадку це тому, що я випадково додав гігантський файл до мого невдалого натискання, і я не міг його позбутися, незалежно від того, що б я не перетягував або скидав, чи rm, що робив після цього.

моє брудне рішення, але працездатним рішенням є перейменування поточного каталогу, повторне клонування каталогу до локального та відображення змін вручну у закритому локальному каталозі ...

Це не добре звучить, але працює ...


1
Я зіткнувся з тією ж проблемою, і за допомогою $ git reset --soft HEAD ~ 1, як те, що запропонував @ozkary, допомогло.
jarrettyeo

0

Помилка для мене полягала в тому, що в проекті не було створено жодних гілок, і моя роль була розробницею, тому я не міг створити жодної гілки, просити, щоб вони дали мені відповідні дозволи та все в порядку зараз!


0

Гілка за замовчуванням (наприклад master) ще не існує для вашого пульта. Тому спочатку потрібно створити masterгілку на віддаленому сервері git (наприклад, створити README.mdфайл за замовчуванням ), а потім спробувати виконати pushвсі існуючі локальні гілки за допомогою цієї команди:

git push -u origin --all

0

Для мене все працювало нормально, поки Bitbucket автоматично не змінив свою політику сьогодні (21 квітня 2020 року). Це трапляється узгодити з новою функцією, нещодавно представленою сьогодні під назвою Workspaces , тому я підозрюю, що це має щось спільне з цим.

Вирішення : я (як адміністратор) дотримувався вказівок, щоб додати електронну адресу до користувачів у користувальницькому інтерфейсі (електронний лист, який ви використовуєте, можна знайтиgit config --list

введіть тут опис зображення


-7

Визначення версії node.js може вирішити подібну проблему

{
  "name": "myapp",
  "description": "a really cool app",
  "version": "1.0.0",
  "engines": {
    "node": "10.3.0"
  }
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.