Git-Fehler beim Versuch zu pushen - Hook vor dem Empfang abgelehnt


206

Wenn ich versuche, eine von mir festgeschriebene Änderung zu pushen, wird folgende Fehlermeldung angezeigt ...

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'

Was ist los?


8
Was ist im Pre-Receive-Hookon-Mycogit enthalten?
Rob Mayoff

Sie würden nicht versuchen, große Dateien an Github zu senden, oder?
Adam F

Zu Ihrer Information: Heute haben alle meine Kollegen diese Fehlermeldung erhalten. Schließlich haben wir beschlossen, unseren Stash-Server neu zu starten, und er wurde auf magische Weise behoben. Wir haben keine Ahnung, worum es eigentlich ging.
T_D

Antworten:


125

Sie sollten fragen, wer das Repo unterhält git@mycogit/cit_pplus.git.

Ihre Commits wurden vom pre-receiveHook dieses Repos abgelehnt (dies ist ein vom Benutzer konfigurierbares Skript, das eingehende Commits analysieren und entscheiden soll, ob sie gut genug sind, um in das Repo aufgenommen zu werden).

Es ist auch eine gute Idee, diese Person zu bitten, den Hook zu aktualisieren, damit die Gründe für die Ablehnung gedruckt werden.

Wenn Sie der Betreuer selbst sind, haben Sie anscheinend ein Problem mit Ihrem Setup auf der Serverseite. Bitte teilen Sie dann weitere Informationen.


7
In meinem Fall hatte BitBucket eine Validierung des Inhalts der Festschreibungsnachricht und konfrontierte ihn mit den JIRA-Tickets, die zu diesem Zeitpunkt offline waren.
Vítor Neil Avelino

1
Also, als es online wurde, ist es behoben?
Shareef

5
In meinem Fall war es eine Nichtübereinstimmung im Benutzernamen, mit dem die Commits generiert wurden, und im Benutzernamen in BitBucket. Ich war nicht berechtigt, den BitBucket-Benutzernamen zu aktualisieren, daher musste ich meine Commits zurücksetzen und sie erneut mit dem aktualisierten Benutzernamen festschreiben. Sie können Git Benutzername mit diesem Befehl aktualisierengit config user.name 'UpdatedUserName'
MM

3
In unserem Fall erlaubte bitbucket niemandem, in diesen Zweig zu pushen.
Ramon Fincken

In meinem Fall musste ich die Repo-Einstellungen auf bitbucket finden und den Verifizierungs-Committer unter den Hooks-Einstellungen deaktivieren.
Sizons

78

Ich wette, Sie versuchen einen nicht schnellen Vorwärtsschub und der Haken blockiert ihn. Wenn dies der Fall ist, führen Sie es einfach aus, git pull --rebasebevor Sie die lokalen Änderungen auf der neuesten Codebasis neu festlegen.


Das ist fantastisch. Jetzt kann ich wieder schieben und ziehen, aber vorher muss ich mich stromaufwärts als einstellen git branch --set-upstream-to=origin/myBranch. +1 für deine Antwort.
AlokeT

In einem neuen Repository habe ich einen Zweig (nicht Master) gepusht, ihn dann neu basiert und beim Push den Fehler erhalten. Ich habe keine Web-Hooks gefunden. Ich hingerichtet git pull --rebase, musste mich neu stützen und konnte den Ast schieben. Schließlich stellte ich fest, dass mein Zweig geschützt wurde.
CoolMind

60

Die Dateigröße ist wichtig. Es gibt ein Limit von ~ 120 MB für eine einzelne Datei. In meinem Fall wurde die Datei in .gitignore mit Visual Studio aufgelistet, die Datei wurde jedoch weiterhin festgeschrieben. Bei Verwendung der git cli können wir detailliertere Informationen über den Fehler erhalten.

Der abgelehnte Pre-Receive-Hook war auf die große Datei zurückzuführen. Grundsätzlich den Push validieren.

Um das Problem zu beheben, habe ich das letzte Commit entfernt mit:

git reset --soft HEAD~1

Ich habe dann die Datei vom Commit ausgeschlossen.

Hinweis: Verwenden Sie HEAD ~ N, um zur N-Anzahl der vorherigen Commits zurückzukehren. (dh 3, 4) Verwenden Sie immer den Schalter --soft, um Änderungen im Ordner beizubehalten

ich hoffe es hilft.


Dies half, da mein Problem darin bestand, dass eine unerwünschte SQL-Dump-Datei (155 MB Dateigröße) (aus Versehen) gepusht wurde.
Mehrdad Dastgir

1
Die Dateigrößenbeschränkung hängt von Ihrem Hosting-Anbieter ab. GitHub hat ein Limit bei ungefähr dieser Größe, für andere variiert es, und selbst gehostetes Git hat natürlich keine solchen Limits.
1615903

1
Was tun Sie, wenn Sie nach dem abgelehnten Push bereits mehrere Commits haben? Dies ist mein Fall. Ich habe eine unerwünschte große Datei (627 MB) in einem der vorherigen Commits, bevor
ich

Ich hatte versehentlich eine CSV-Datei hochgeladen. In meinem Fall war der Fehler darauf zurückzuführen.
Tonhozi

Wenn Sie mehrere Commits haben, erhöhen Sie den Index, um den Kopf auf dieses Commit zurückzusetzen. Verwenden Sie beispielsweise HEAD ~ 3, um zu drei vorherigen Commits zurückzukehren. Verwenden Sie immer den Schalter --soft, um Änderungen im Ordner beizubehalten.
Ozkary

13

Dies kann daran liegen, dass Sie nicht über das Zugriffsrecht verfügten, um ein Commit an einen Zweig wie z master. Sie können den Betreuer bitten, Ihnen das Recht zu geben, Commits zu pushen.


Ich denke, das ist richtig, aber was interessant ist, VS scheint zu versuchen, auf den übergeordneten Zweig zu pushen, nicht den tatsächlichen Zweignamen auf die Fernbedienung. Wenn der übergeordnete Zweig geschützt ist, scheint dies zu geschehen, aber es scheint ohnehin keine Möglichkeit zu geben, dies in VS zu korrigieren, und Sie müssen zur cmd-Zeile wechseln.
Mark


8

Ich habe diese Meldung erhalten, als der GitLab-Server einige Änderungen vorgenommen hat. Am nächsten Tag hat das Schieben gut funktioniert. Wie andere bereits betont haben, wenden Sie sich an Ihren Betreuer, um sicherzugehen.


1
Hatte gerade dieses Problem und ich denke, GitLab hat Änderungen vorgenommen. Gab es 10 Minuten und es hat funktioniert. Ich habe nichts geändert.
woter324

Hatte gerade auch dieses Problem. Für alle, die überprüfen möchten, ob dies der Fall ist: status.gitlab.com
Renan Ferrari

5

Ich hatte dieses Problem, als ich versuchte, Änderungen mit einer Dateigröße zusammenzuführen, die größer war als das zulässige Remote-Repository (in meinem Fall GitHub).


2
In meinem Fall beschwerte sich GitHub auch nach dem Löschen der Datei noch ... aber diese Antwort hat den Trick stackoverflow.com/questions/19573031/…
CodenameDuchess

5

Ich bin auf dasselbe Problem gestoßen.
Was es für mich gelöst hat, war, zu einem anderen Zweig und dann zurück zum ursprünglichen Zweig zu wechseln.

Ich bin mir nicht sicher, was die unterstrichene Ursache war, aber das hat es behoben.


Ich konnte auch nicht in die neue Filiale
pushen

3

Bitbucket : Überprüfen Sie die Einstellungen auf Verzweigungsberechtigungen (möglicherweise auf "Alle verweigern"). Wenn dies nicht funktioniert, klonen Sie einfach Ihren Zweig in einen neuen lokalen Zweig , übertragen Sie die Änderungen auf die Remote (ein neuer Remote-Zweig wird erstellt) und erstellen Sie eine PR.


2

Falls es jemandem hilft:

Ich hatte ein leeres Repo ohne Hauptzweig zum Aufheben des Schutzes (in Gitlab), bevor ich es ausführte git push -u origin --all

  • Ich musste git push -u origin masterzuerst rennen ,
  • Deaktivieren Sie den Hauptzweig vorübergehend
  • schiebe den Rest ( --all& --tags)

2

Bei der Überprüfung, dass ich einen Entwicklerzugriff hatte und keinen neuen Zweig veröffentlichen konnte, trat der gleiche Fehler auf. Durch Hinzufügen höherer Zugriffsrechte wurde dieses Problem behoben. (Gitlab)


2

Ich habe diesen Fehler mit GitHub Gist bekommen. Ich habe versucht, ein Commit mit Dateien in Unterverzeichnissen zu pushen. Es stellte sich heraus, dass Gist nur Dateien im Stammverzeichnis haben kann.


Habe das auch. Es stellte sich heraus, dass das Repo die Datei hatte, "snippets\\csharp.json"die es Git unter Windows schwer machte.
Carl Walsh

2

Entfernen Sie die Option "Geschützter Zweig" oder lassen Sie zusätzliche Rollen wie Entwickler oder Administratoren zu, damit diese Benutzer, bei denen dieser Fehler auftritt, Zusammenführungen und Pushs durchführen können.


1

In meinem Fall haben wir Hooks für Festschreibungsnachrichten. Unser Serverskript akzeptiert Festschreibungen, wenn sie das spezielle Format für Festschreibungsnachrichten haben "<JIRA ID><Message>". Es (Hook) lehnt das Festschreiben ab, wenn das entsprechende Jira-Ticket nicht vorhanden ist oder die Festschreibungsnachricht einige spezielle Symbole enthält. Ich sehe diesen Fehler, wenn ich /, [,> usw. in eine Festschreibungsnachricht einfüge und diese entfernt.


Es ist unwahrscheinlich, dass diese Antwort hilft, da auf dem Originalposter (und allen anderen Besuchern in Zukunft) ein anderes Skript als Pre-Receive-Hook konfiguriert ist.
Aronisstav

1

Dies geschieht tatsächlich, wenn YACC in BitBucket serverseitig aktiviert ist. Mit YACC können JIRA-Problemnamen in der Festschreibungsnachricht erwähnt werden. Wenn Sie also mindestens etwas festschreiben, behalten Sie Ihre JIRA-Nummer in der Festschreibungsnachricht bei, und Sie können dann zusätzlich Ihre eigene Nachricht hinzufügen.


1

Ich habe GitKraken verwendet und wir haben einen lokalen Zweig erstellt, dann haben wir zwei entfernte Zweige darin zusammengeführt und dann versucht, den lokalen Zweig zum Ursprung zu verschieben. Es hat nicht mit der gleichen Fehlermeldung funktioniert.

Die Lösung bestand darin , den lokalen Zweig zu erstellen und ihn zuerst zum Ursprung zu verschieben und dann die Zusammenführung durchzuführen.


1

Problem: "PUSH fehlgeschlagen refs / head / - Pre-Receive-Hook abgelehnt"

Ich hatte das Problem, dass ich meine Änderungen nicht in meinen Ursprungszweig und in den Master-Zweig eines bestimmten Projekt-Repositorys übertragen konnte, da die Größe dieses Repos die feste Grenze von 2 GB überschritt. Es warf den Fehler. Das liegt daran, dass wir die Testdaten unwissentlich von anderen Testzweigen auf Bitbucket übertragen hatten.

PUSH fehlgeschlagen refs / head / - Pre-Receive-Hook abgelehnt

So versucht, zu überprüfen, ist das gleiche mit anderen Projekt-Repos und sie hatten keine Probleme.

Fix:

Mein Kollege bemerkte, dass das Projekt 110 MB groß war, als wir das Projekt lokal geklont haben. Also haben wir angefangen, die zuvor zusammengeführten Zweige und aktiven Zweige zu reinigen, die nicht mehr benötigt werden. Nachdem diese Reinigung für einige Filialen durchgeführt wurde, stellten wir fest, dass die Größe des Repos drastisch von 2 GB auf 120 MB gesunken ist. Dann haben wir versucht, die Änderungen in meine Filiale zu übertragen, und es hat funktioniert.


1

In meinem Fall hatte ich ein neues Repository, habe einen Zweig ('UCA-46', nicht 'Master') gepusht, ihn neu basiert, erneut gewaltsam gepusht und den Fehler erhalten. Es gab keine Web-Hooks. Ich habe ausgeführt, git pull --rebasewie @ThiefMaster empfohlen hat, musste erneut eine Basis erstellen und konnte den Zweig verschieben. Aber das war ein seltsamer und schwieriger Weg.

Dann sah ich Git Push Fehler Pre-Receive Hook abgelehnt . Ich stellte fest, dass mein Zweig geschützt wurde . Ich entfernte den Schutz und konnte wieder gewaltsam drücken.

Geben Sie hier die Bildbeschreibung ein


0

Ich habe das bekommen, als ich versucht habe, auf eine Dokku-Instanz zu pushen. Es stellte sich heraus, dass die Festplatte auf meinem Server voll war.

Ran: du -f

Und das Ergebnis war:

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

Für mich löst die Autorisierung auf einem Remote-Git-Server das Problem. Geben Sie hier die Bildbeschreibung ein


0

In meinem Fall liegt es daran, dass ich versehentlich eine riesige Datei zu meinem nicht festgeschriebenen Push hinzugefügt habe und sie nicht loswerden konnte, egal was ich nachher gezogen oder zurückgesetzt oder rm gemacht habe.

Meine schmutzige, aber praktikable Lösung besteht darin, das aktuelle Verzeichnis umzubenennen, das Verzeichnis erneut in ein lokales Verzeichnis zu klonen und die Änderungen manuell in das neu geklonte lokale Verzeichnis zu übernehmen ...

Es klingt nicht gut, funktioniert aber ...


1
Ich hatte das gleiche Problem und die Verwendung von $ git reset --soft HEAD ~ 1 als Hilfe von @ozkary.
jarrettyeo

0

Der Fehler für mich war, dass für das Projekt keine Zweige erstellt wurden und meine Rolle Entwickler war, sodass ich keinen Zweig erstellen konnte. Bitten Sie mich, mir die entsprechenden Berechtigungen und alles in Ordnung zu geben!


0

Ein Standardzweig (z. B. master) ist für Ihre Fernbedienung noch nicht vorhanden. Sie müssen also zuerst einen masterZweig auf dem Git-Remote-Server erstellen (z. B. eine Standarddatei README.mderstellen) und dann versuchen, pushmit diesem Befehl alle vorhandenen lokalen Zweige zu erreichen:

git push -u origin --all

0

Für mich hat alles gut funktioniert, bis Bitbucket heute (21. April 2020) automatisch seine Richtlinien geändert hat. Dies stimmt mit einer neuen Funktion überein , die kürzlich als Workspaces eingeführt wurde. Ich vermute, dass dies etwas damit zu tun hat.

Problemumgehung : Ich (als Administrator ) habe die Anweisungen zum Hinzufügen der E-Mail-Adresse zu Benutzern in der Benutzeroberfläche befolgt (die von Ihnen verwendete E-Mail kann gefunden werdengit config --list

Geben Sie hier die Bildbeschreibung ein


-7

Das Angeben einer node.js-Version kann das Problem wie folgt lösen

{
  "name": "myapp",
  "description": "a really cool app",
  "version": "1.0.0",
  "engines": {
    "node": "10.3.0"
  }
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.