Ошибка 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перед нажатием, чтобы перебазировать ваши локальные изменения в новейшей кодовой базе.

ThiefMaster
источник
Это круто. Теперь я могу снова толкать и тянуть, но перед этим мне нужно настроить 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, чтобы сохранить изменения в папке

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

ozkary
источник
Это помогло, так как моя проблема заключалась в том, что нежелательный файл дампа SQL (размер файла 155 МБ) выталкивался (случайно).
Мердад Дастгир
1
Ограничение размера файла зависит от вашего хостинг-провайдера. GitHub имеет ограничение в пределах этого размера, для других оно варьируется, и у git, размещенного на собственной машине, естественно, нет таких ограничений.
1615903
1
что вы делаете, если у вас уже есть несколько коммитов после отклоненного толчка? Это мой случай. У меня есть нежелательный большой файл (627 МБ) в одном из предыдущих коммитов, прежде чем пытаться нажать на репо
leeCoder
У меня был CSV-файл, загруженный случайно. Так что в моем случае ошибка была из-за этого.
tonhozi
Если у вас есть несколько коммитов, увеличьте индекс, чтобы вернуть голову к этому коммиту. Например, используйте HEAD ~ 3, чтобы вернуться к трем предыдущим коммитам. Всегда используйте ключ --soft для сохранения изменений в папке.
Озкары
13

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

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

В моем случае я получил это сообщение, потому что ветвь была помечена как «Защищенная» в GitLab.

Дейв де Йонг
источник
1
См stackoverflow.com/a/28832644/2914140 или проект GitLab> Настройки> Repository, а затем Protected Branchesнайти его.
CoolMind
8

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

Thomm
источник
1
Просто была эта проблема, и я думаю, что GitLab вносил изменения. Дали 10 минут и все заработало. Я ничего не изменил.
woter324
Просто была эта проблема. Для тех, кто хочет проверить, так ли это: status.gitlab.com
Ренан Феррари
5

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

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

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

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

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

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

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

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

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

Сандра Паван
источник
2

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

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

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

eTechman
источник
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 отклонен . Я обнаружил, что моя ветвь стала защищенной . Я снял защиту и мог снова толкнуть.

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

CoolMind
источник
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% /
frmdstryr
источник
0

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

shdr
источник
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

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

Jas
источник
-7

Указание версии node.js может решить проблему следующим образом

{
  "name": "myapp",
  "description": "a really cool app",
  "version": "1.0.0",
  "engines": {
    "node": "10.3.0"
  }
}
дешифратор
источник