Błąd Git podczas próby wypchnięcia - odrzucony hak odbioru wstępnego

206

Kiedy próbuję wprowadzić zatwierdzoną przeze mnie zmianę, pojawia się następujący błąd ...

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'

Co się dzieje?

Dave
źródło
8
Co zawiera wstępnie otrzymany mycogit hookon?
rob mayoff
Nie próbowałbyś wypychać dużych plików na github, prawda?
Adam F
Do waszej wiadomości: dzisiaj wszyscy moi koledzy mają ten błąd, w końcu postanowiliśmy zrestartować nasz serwer skrytki i został on naprawiony magicznie. Nie mamy pojęcia, o co tak naprawdę chodziło.
T_D

Odpowiedzi:

125

Powinieneś zapytać, kto utrzymuje repo git@mycogit/cit_pplus.git.

Twoje zatwierdzenia zostały odrzucone przez pre-receivehak tego repozytorium (jest to konfigurowalny przez użytkownika skrypt, który ma analizować przychodzące commity i zdecydować, czy są wystarczająco dobre, aby zostać zaakceptowanym w repo).

Dobrym pomysłem jest również poproszenie tej osoby o zaktualizowanie haka, aby wydrukował powody odrzucenia.

Jeśli opiekun jest tobą sam, wygląda na to, że masz problem z konfiguracją po stronie serwera. W takim razie proszę podać więcej informacji.

Alexander Gladysh
źródło
7
W moim przypadku BitBucket sprawdził treść komunikatu zatwierdzenia, konfrontując go z biletami JIRA, które w tym momencie były offline.
Vítor Neil Avelino
1
więc kiedy stało się online, jest naprawione?
shareef
5
W moim przypadku było to niedopasowanie w nazwie użytkownika, z którą wygenerowano zatwierdzenia, i w nazwie użytkownika w BitBucket. Nie miałem uprawnień do aktualizacji nazwy użytkownika BitBucket, więc musiałem zresetować swoje zatwierdzenia i zatwierdzić je ponownie zaktualizowaną nazwą użytkownika. Możesz zaktualizować nazwę użytkownika git za pomocą tego poleceniagit config user.name 'UpdatedUserName'
MM
3
W naszym przypadku bitbucket nie pozwolił nikomu pchać się do tego oddziału.
Ramon Fincken
W moim przypadku musiałem znaleźć ustawienia repo na bitbucket i wyłączyć weryfikatora w ustawieniach Hooks.
Sizons,
78

Założę się, że próbujesz pchnięcia nie do przodu, a hak go blokuje. W takim przypadku po prostu uruchom git pull --rebaseprzed wypchnięciem, aby wprowadzić zmiany lokalne w najnowszej bazie kodu.

ThiefMaster
źródło
To jest niesamowite. Teraz mogę znów pchać i ciągnąć, ale przed tym muszę ustawić upstream jako git branch --set-upstream-to=origin/myBranch. +1 za twoją odpowiedź.
AlokeT
W nowym repozytorium wypchnąłem gałąź (nie master), następnie zmieniłem jej bazę i dostałem błąd podczas wypychania. Nie znalazłem haków internetowych. git pull --rebaseWykonałem egzekucję , musiałem ponownie dokonać bazowania i byłem w stanie pchnąć gałąź. W końcu odkryłem, że mój oddział został objęty ochroną.
CoolMind,
60

Rozmiar pliku jest ważny. Limit pojedynczego pliku wynosi ~ 120 MB. W moim przypadku plik .gitignore korzystający z programu Visual Studio miał plik na liście, ale plik został zatwierdzony. Korzystając z git cli, możemy uzyskać bardziej szczegółowe informacje o błędzie.

hak przed odebraniem został odrzucony w wyniku dużego pliku. Zasadniczo sprawdzanie poprawności wypychania.

Aby to rozwiązać, usunąłem ostatni zatwierdzenie, używając:

git reset --soft HEAD~1

Następnie wykluczyłem plik z zatwierdzenia.

Uwaga: Użyj HEAD ~ N, aby wrócić do N liczby poprzednich zatwierdzeń. (tj. 3, 4) Zawsze używaj przełącznika --soft, aby zachować zmiany w folderze

mam nadzieję, że to pomoże.

ozkary
źródło
Pomogło to, ponieważ mój problem polegał na tym, że niechciany plik zrzutu SQL (rozmiar pliku 155 mb) był wypychany (przypadkowo).
Mehrdad Dastgir
1
Limit rozmiaru pliku zależy od dostawcy usług hostingowych. GitHub ma limit zbliżony do tego rozmiaru, dla innych jest różny, a samo hostowanie git oczywiście nie ma takich limitów.
1615903
1
co robisz, jeśli masz już kilka zatwierdzeń po odrzuceniu wypychania? w tym przypadku mam niechciany duży plik (627 MB) w jednym z poprzednich zatwierdzeń przed próbą wypchnięcia do repo
leeCoder
Miałem przypadkowo przesłany plik CSV. Tak więc w moim przypadku błąd był z tego powodu.
tonhozi
Jeśli masz kilka zatwierdzeń, zwiększ indeks, aby zresetować głowicę z powrotem do tego zatwierdzenia. Na przykład użyj HEAD ~ 3, aby wrócić do trzech poprzednich zatwierdzeń. Zawsze używaj przełącznika --soft, aby zachować zmiany w folderze.
ozkary
13

Może to być spowodowane tym, że nie masz prawa dostępu do wypychania zatwierdzenia do gałęzi, takiej jak master. Możesz poprosić opiekuna, aby dał ci prawo do wypychania zatwierdzeń.

cholernie
źródło
Myślę, że jest to poprawne, ale interesujące jest to, że VS próbuje wypchnąć gałąź nadrzędną, a nie rzeczywistą nazwę gałęzi do pilota. Więc jeśli gałąź nadrzędna jest chroniona, wydaje się, że tak się dzieje, ale wydaje się, że i tak nie można tego naprawić w VS i musisz przełączyć się na linię cmd.
Mark
9

W moim przypadku dostałem tę wiadomość, ponieważ gałąź została oznaczona jako „Protected” w GitLab.

Dave de Jong
źródło
1
Zobacz stackoverflow.com/a/28832644/2914140 lub projekt GitLab> Ustawienia> Repozytorium, a następnie Protected Branchesje znajdź.
CoolMind
8

Otrzymałem ten komunikat, gdy serwer GitLab przechodził pewne zmiany. Następnego dnia pchanie działało dobrze. W każdym razie, jak zauważyli inni, skontaktuj się ze swoim opiekunem, aby się upewnić.

Thomm
źródło
1
Właśnie miałem ten problem i myślę, że GitLab wprowadzał zmiany. Dałem mu 10 minut i zadziałało. Nic nie zmieniłem.
woter324
Właśnie miałem ten problem. Dla każdego, kto może chcieć to sprawdzić: status.gitlab.com
Renan Ferrari
5

Miałem ten problem podczas próby scalenia zmian o rozmiarze pliku większym niż dozwolone zdalne repozytorium (w moim przypadku był to GitHub)

serup
źródło
2
W moim przypadku nawet po usunięciu pliku GitHub nadal narzekał ... ale ta odpowiedź zrobiła sztuczkę stackoverflow.com/questions/19573031/...
CodenameDuchess
5

Napotkałem ten sam problem.
To, co udało mi się rozwiązać, to przejście do innej gałęzi, a następnie powrót do pierwotnej.

Nie jestem pewien, co było przyczyną podkreślenia, ale to naprawiło.

Shapiro Yaacov
źródło
Nie mogłem też naciskać na nowy oddział
zabop
2

W przypadku, gdy pomaga to komuś:

Miałem puste repozytorium bez gałęzi master do ochrony (w Gitlab), więc przed uruchomieniem git push -u origin --all

  • git push -u origin masterNajpierw musiałem biec
  • tymczasowo odłączyć gałąź master
  • popchnij resztę ( --alli --tags)
medmek
źródło
2

Napotkałem ten sam błąd, po sprawdzeniu miałem dostęp do programisty i nie mogłem opublikować nowego oddziału. Dodanie wyższych praw dostępu rozwiązało ten problem. (Gitlab)

Sandra Pavan
źródło
2

Mam ten błąd z GistHub gist. Próbowałem wcisnąć zatwierdzenie z plikami w podkatalogach. Okazało się, że gist może mieć tylko pliki w katalogu głównym.

Sergej Popow
źródło
Też to mam. Okazało się, że repo miało plik, "snippets\\csharp.json"który sprawił, że git na Windowsie miał problemy.
Carl Walsh,
2

Usuń opcję chronionego oddziału lub zezwól na dodatkowe role, takie jak programiści lub administratorzy, aby umożliwić tym użytkownikom występowanie tego błędu wykonywanie połączeń i wypychanie.

eTechman
źródło
1

W moim przypadku mamy haczyki dla komunikatów zatwierdzania, nasz skrypt serwera akceptuje zatwierdzenia, jeśli mają one specjalny format dla wiadomości zatwierdzania "<JIRA ID><Message>". (Hook) odrzuca zatwierdzenie, jeśli odpowiedni bilet Jira nie istnieje lub w komunikacie zatwierdzenia znajdują się specjalne symbole. Napotykam ten błąd, gdy dodam /, [,> itd. W komunikacie zatwierdzenia, usuwając te działa dobrze.

Aditya Deshmane
źródło
Ta odpowiedź raczej nie pomoże, ponieważ oryginalny plakat (i każda inna osoba odwiedzająca w przyszłości) będzie miał inny skrypt skonfigurowany jako hak przed odbiorem.
aronisstav
1

Dzieje się tak, gdy YACC jest włączony po stronie serwera w BitBucket. YACC umożliwia wymienienie nazw problemów JIRA w komunikacie zatwierdzenia. Dlatego za każdym razem, gdy cokolwiek popełniasz, zachowaj swój numer JIRA w komunikacie zatwierdzenia, a następnie możesz dodać własną wiadomość.

Agnel Amodia
źródło
1

Korzystałem z GitKraken i stworzyliśmy lokalny oddział, następnie połączyliśmy w nim dwa zdalne oddziały, a następnie próbowaliśmy zepchnąć lokalny oddział do początku. Nie działa z tym samym komunikatem o błędzie.

Rozwiązaniem było utworzenie lokalnego oddziału i przesunąć go najpierw do pochodzenia, a następnie wykonać scalenie.

Iść do
źródło
1

Problem: „PUSH Failed refs / head / - odmówiono odbioru wstępnego”

Napotkałem problem polegający na tym, że nie mogłem przesłać moich zmian do mojej gałęzi źródłowej ani niczego do master gałęzi konkretnego repozytorium projektu, ponieważ rozmiar tego repozytorium przekroczył twardy limit 2 GB. Zgłaszał błąd. To dlatego, że nieświadomie przekazaliśmy dane testowe do bitbucket z innych gałęzi testowych.

PUSH Failed refs / head / - odrzucony hak odbioru wstępnego

Próbowałem więc sprawdzić, czy to samo z innymi repozytoriami projektów i nie miały żadnych problemów.

Naprawić:

Mój kolega zauważył, że kiedy klonowaliśmy projekt lokalnie, jego rozmiar wynosił 110 MB. Więc wtedy zaczęliśmy czyścić gałęzie, które wcześniej scaliliśmy i aktywne gałęzie, które nie są już potrzebne. Po wyczyszczeniu kilku gałęzi zdaliśmy sobie sprawę, że rozmiar repozytorium drastycznie spadł z 2 GB do 120 MB. Potem próbowaliśmy wprowadzić zmiany do mojego oddziału i zadziałało.

Dugini Vijay
źródło
1

W moim przypadku miałem nowe repozytorium, wypchnąłem gałąź („UCA-46”, a nie „master”), wydałem ją ponownie, forsowałem ponownie i dostałem błąd. Nie istniały żadne haki internetowe. I wykonany git pull --rebasejako @ThiefMaster poinformowała, musiał ponownie rebase i był w stanie popchnąć oddziału. Ale to był dziwny i trudny sposób.

Potem zobaczyłem, że hak błędu odbioru Git push został odrzucony . Odkryłem, że mój oddział został objęty ochroną . Usunąłem ochronę i mogłem ponownie naciskać.

wprowadź opis zdjęcia tutaj

CoolMind
źródło
0

Mam to przy próbie wypychania do instancji dokku. Okazało się, że dysk był pełny na moim serwerze.

Biegł: du -f

I wynik był:

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
źródło
0

Dla mnie autoryzacja na zdalnym serwerze git rozwiązuje problem. wprowadź opis zdjęcia tutaj

shdr
źródło
0

W moim przypadku dzieje się tak dlatego, że przypadkowo dodałem gigantyczny plik do mojego niezaangażowanego pchnięcia i nie mogłem się go pozbyć, bez względu na to, jakie ściągnięcie, reset lub rm zrobiłem później.

moim brudnym rozwiązaniem, ale wykonalnym rozwiązaniem jest zmiana nazwy bieżącego katalogu, ponowne sklonowanie katalogu na lokalny i odzwierciedlenie zmian ręcznie w ponownie sklonowanym katalogu lokalnym ...

Nie brzmi dobrze, ale działa ...

Jeffrey Ng
źródło
1
Napotkałem ten sam problem i skorzystałem z $ git reset --soft HEAD ~ 1, tak jak sugerował @ozkary.
jarrettyeo
0

Błąd polegał na tym, że w projekcie nie utworzono żadnych gałęzi, a moją rolą był programista, więc nie mogłem utworzyć żadnej gałęzi, poprosiłem o udzielenie mi odpowiednich uprawnień i wszystko w porządku!

Manuel Alanis
źródło
0

Domyślna gałąź (np. master) Jeszcze nie istnieje dla twojego pilota. Więc najpierw musisz utworzyć mastergałąź na zdalnym serwerze git (np. Tworząc README.mdplik domyślny ), a następnie spróbuj wykonać pushwszystkie istniejące gałęzie lokalne za pomocą tego polecenia:

git push -u origin --all
Duc Filan
źródło
0

Dla mnie wszystko działało dobrze, dopóki Bitbucket nie zmieni dziś automatycznie swojej polityki (21 kwietnia 2020 r.). Dzieje się tak, aby dostosować się do nowej funkcji, niedawno wprowadzonej dzisiaj, o nazwie Workspaces , więc podejrzewam, że ma to coś wspólnego z tym.

Obejście : I (jako administrator) postępowałem zgodnie z instrukcjami, aby dodać adres e-mail do użytkowników w interfejsie użytkownika (e-mail, którego używasz, można znaleźćgit config --list

wprowadź opis zdjęcia tutaj

Jas
źródło
-7

Określenie wersji node.js może rozwiązać problem

{
  "name": "myapp",
  "description": "a really cool app",
  "version": "1.0.0",
  "engines": {
    "node": "10.3.0"
  }
}
DeCoder
źródło