Ошибка 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
Что входит в состав предварительного приема микогита?
Роб Майофф

Вы бы не пытались загружать большие файлы в github?
Адам Ф

К вашему сведению: сегодня все мои коллеги получили это сообщение об ошибке, в конце концов мы решили перезапустить наш stash-сервер, и он был волшебным образом исправлен. Мы понятия не имеем, в чем проблема на самом деле.
T_D

Ответы:


125

Вы должны спросить любого, кто поддерживает репо в git@mycogit/cit_pplus.git.

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

Также неплохо бы попросить этого человека обновить хук, чтобы он напечатал причины отклонения.

Если сопровождающий - это вы, значит, у вас проблемы с настройкой на стороне сервера. Пожалуйста, поделитесь дополнительной информацией тогда.


7
В моем случае BitBucket проверил содержимое сообщения фиксации, сопоставив его с билетами JIRA, которые в тот момент были недоступны.
Виктор Нейл Авелино

1
поэтому, когда он стал онлайн, его исправили?
Шариф

5
В моем случае это было несоответствие имени пользователя, с которым были созданы коммиты, и имени пользователя в BitBucket. Я не был авторизован для обновления имени пользователя BitBucket, поэтому мне пришлось сбросить коммиты и зафиксировать их снова с обновленным именем пользователя. С помощью этой команды вы можете обновить имя пользователя gitgit config user.name 'UpdatedUserName'
MM

3
В нашем случае bitbucket не позволял никому толкать эту ветку.
Рамон Финкен

В моем случае мне пришлось найти настройки репо в bitbucket и отключить коммиттер проверки в настройках хуков.
Сизоны

78

Могу поспорить, что вы пытаетесь сделать толчок без быстрой перемотки вперед, и крюк блокирует его Если это так, просто запустите git pull --rebaseперед нажатием, чтобы перебазировать ваши локальные изменения в новейшей кодовой базе.


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

В новом репозитории я нажал ветку (не master), затем перебазировал ее и получил ошибку во время push. Я не нашел веб-хуков. Я выполнил git pull --rebase, пришлось перебазировать снова и смог подтолкнуть ветку. Наконец я обнаружил, что моя ветка стала защищенной.
CoolMind

60

Размер файла важен. Существует ограничение в ~ 120 МБ для одного файла. В моем случае файл .gitignore, использующий Visual Studio, имел в списке файл, но файл все еще был зафиксирован. При использовании git cli мы можем получить более подробную информацию об ошибке.

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

Чтобы решить эту проблему, я удалил последний коммит, используя:

git reset --soft HEAD~1

Затем я исключил файл из коммита.

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

Надеюсь, поможет.


Это помогло, так как моя проблема заключалась в том, что нежелательный файл дампа SQL (размер файла 155 МБ) выталкивался (случайно).
Мердад Дастгир

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

1
что вы делаете, если у вас уже есть несколько коммитов после отклоненного толчка? Это мой случай. У меня есть нежелательный большой файл (627 МБ) в одном из предыдущих коммитов, прежде чем пытаться нажать на репо
leeCoder

У меня был CSV-файл, загруженный случайно. Так что в моем случае ошибка была из-за этого.
tonhozi

Если у вас есть несколько коммитов, увеличьте индекс, чтобы вернуть голову к этому коммиту. Например, используйте HEAD ~ 3, чтобы вернуться к трем предыдущим коммитам. Всегда используйте ключ --soft для сохранения изменений в папке.
Озкары

13

Это может быть связано с тем, что у вас не было прав доступа для отправки коммита в ветку, например master. Вы можете попросить сопровождающего дать вам право выдвигать коммиты.


Я думаю, что это правильно, но интересно то, что VS пытается передать родительскую ветвь, а не фактическое имя ветки на удаленную. Так что, если родительская ветвь защищена, это, кажется, происходит, но в VS все равно нет возможности исправить это, и вам нужно переключиться на строку cmd.
Марк


8

Я получил это сообщение, когда на сервере GitLab произошли некоторые изменения. На следующий день толчок работал нормально. В любом случае, как отмечали другие, уточните у своего сопровождающего.


1
Просто была эта проблема, и я думаю, что GitLab вносил изменения. Дали 10 минут и все заработало. Я ничего не изменил.
woter324

Просто была эта проблема. Для тех, кто хочет проверить, так ли это: status.gitlab.com
Ренан Феррари

5

У меня была эта проблема при попытке объединить изменения с размером файла больше, чем разрешено удаленным хранилищем (в моем случае это был GitHub)


2
В моем случае даже после удаления файла GitHub все еще жаловался ... но этот ответ сделал трюк stackoverflow.com/questions/19573031/…
CodenameDuchess

5

Я столкнулся с этой же проблемой.
Для меня это решило переключиться на другую ветку и затем вернуться к первоначальной.

Не уверен, что причина подчеркивания была, но это исправило это.


Я не мог продвинуться к новой ветви ни
zabop


2

Если это кому-то поможет:

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

  • Я должен был бежать git push -u origin masterпервым,
  • временно снять защиту с главной ветки
  • подтолкнуть остальных ( --all& --tags)

2

Я столкнулся с той же ошибкой, после проверки у меня был доступ разработчика и я не мог опубликовать новую ветку. Добавление более высоких прав доступа решило эту проблему. (Gitlab)


2

Я получил эту ошибку с GitHub Gist. Я пытался отправить коммит с файлами в подкаталогах. Оказалось, гист может иметь файлы только в корневом каталоге.


Понял это тоже. Оказывается, в репозитории был файл, из-за "snippets\\csharp.json"которого на окнах возникали неприятности.
Карл Уолш

2

Удалите параметр защищенной ветви или разрешите дополнительные роли, такие как разработчики или администраторы, чтобы позволить этим пользователям, испытывающим эту ошибку, выполнять слияния и переносить.


1

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


Этот ответ вряд ли поможет, так как оригинальный постер (и любой, кто посетит его в будущем) будет иметь другой сценарий, настроенный как ловушка предварительного получения.
aronisstav

1

Это на самом деле происходит, когда YACC включен на стороне сервера в BitBucket. YACC позволяет указывать имена проблем JIRA в сообщении фиксации. Поэтому всякий раз, когда вы что-то делаете, сохраняйте свой номер JIRA в сообщении о коммите, а затем дополнительно вы можете добавить свое собственное сообщение.


1

Я использовал GitKraken, и мы создали локальную ветвь, затем мы объединили две удаленные ветви в ней, а затем мы попытались подтолкнуть локальную ветвь к источнику. Он не работал с тем же сообщением об ошибке.

Решение было создать местное отделение и толкать его первым к зарождению , а затем выполнить слияние.


1

Проблема: «PUSH Failed refs / head / - крюк предварительного получения отклонен»

Я столкнулся с проблемой невозможности перенести мои изменения в мою исходную ветку и что-либо в основную ветку репозитория конкретного проекта, так как размер этого репо превысил жесткий лимит 2 ГБ. Это была ошибка. Это потому, что мы неосознанно поместили тестовые данные в bitbucket из других ветвей тестирования.

PUSH Сбой refs / head / - крюк предварительного получения отклонен

Итак, попытка проверки заключается в том, что то же самое с другими репозиториями проекта, и у них не было никаких проблем.

Fix:

Мой коллега заметил, что когда мы клонировали проект локально, размер проекта составлял 110 МБ. Итак, мы начали очищать ранее объединенные ветки и активные ветки, которые больше не нужны. Как только эта очистка была сделана для нескольких веток, мы поняли, что размер репо резко сократился с 2 ГБ до 120 МБ. Затем мы попытались перенести изменения в мою ветку, и это сработало.


1

В моем случае у меня был новый репозиторий, я выдвинул ветку («UCA-46», а не «master»), сделал ребазинг, принудительно подтолкнул снова и получил ошибку. Веб-хуков не было. Я выполнил, git pull --rebaseкак советовал @ThiefMaster , пришлось перебазировать снова и смог нажать на ветку. Но это был странный и сложный путь.

Затем я увидел, что обработчик ошибок предварительного приема Git отклонен . Я обнаружил, что моя ветвь стала защищенной . Я снял защиту и мог снова толкнуть.

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


0

Я получил это при попытке подтолкнуть к Dokku экземпляр. Оказывается, диск был заполнен на моем сервере.

Ран: 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.