Git Push schlägt mit Remote fehl: Fehler: Hook lehnte es ab, Refs / Heads / Master zu aktualisieren


9

Ich habe kürzlich versucht, mein eigenes Projekt auf einem Community-Git-Repo zu starten, und ich hatte einige Komplikationen. Ich bin neu in Git, aber hier ist, was ich versucht habe, um es nur zu testen.

Ich führe die folgenden Befehle aus und alle laufen in Ordnung.

git config --global user.name "MYNAME"
git config --global user.email "MYEMAIL"
mkdir testproject
cd testproject
git init
touch README
git add README
git commit -m 'first commit'
git remote add origin git@git.xxxxx.org:community/testproject.git

Alle oben genannten Befehle werden ohne Fehler ausgeführt. Wenn ich jedoch den nächsten Befehl ausführe, wird ein großer Fehler angezeigt.

git push -u origin master

und der Fehler ist.

Counting objects: 3, done.
Writing objects: 100% (3/3), 204 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
Username for 'http://git.xxxxxx.org': MYEMAIL
Password for 'http://MYEMAIL.com@git.xxxxxx.org': 
remote: /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/spec_set.rb:92:in `block in materialize': Could not find rake-10.1.0 in any of the sources (Bundler::GemNotFound)
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/spec_set.rb:85:in `map!'
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/spec_set.rb:85:in `materialize'
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/definition.rb:114:in `specs'
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/definition.rb:159:in `specs_for'
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/definition.rb:148:in `requested_specs'
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/environment.rb:18:in `requested_specs'
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:13:in `setup'
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler.rb:120:in `setup'
remote:         from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/setup.rb:17:in `<top (required)>'
remote:         from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
remote:         from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
remote: error: hook declined to update refs/heads/master
To http://git.xxxxxx.org/community/testproject.git
 ! [remote rejected] master -> master (hook declined)
error: failed to push some refs to 'http://git.xxxxxx.org/community/testprojact.git'

Ich bin mir nicht sicher, was ich von hier aus tun soll, aber jede Hilfe wird sehr geschätzt.

Außerdem leite ich Arch, wenn es darauf ankommt.

Bearbeiten: Ich habe versucht, Rake neu zu installieren und es hat nicht funktioniert. Meine aktuelle Version von Rake war 10.1.1, also habe ich versucht, es zu entfernen und durch Version 10.1.0 zu ersetzen, und das hat es auch nicht behoben.

Bei der Installation von Rake wurde jedoch eine Fehlermeldung angezeigt:

WARNING:  You don't have /home/josh/.gem/ruby/2.0.0/bin in your PATH,
          gem executables will not run.

Könnte dies zum Problem beitragen?

Antworten:


9

Dass die Fernbedienung den Empfang der Daten abgelehnt hat, ist nur ein Nebeneffekt des eigentlichen Problems. Git glaubt, dass dies abgelehnt wurde, weil einer der Hooks am entfernten Ende mit einem Exit-Status> 0 fehlgeschlagen ist (Sie können sehen, was es in der war Ruby Traceback). Es scheint, dass einer der Haken versucht, ihn zu verwenden rake, und ihn nicht finden kann. Dies ist wahrscheinlich kein Problem mit Ihrem spezifischen Repo. Diese Nachricht stammt auch nicht von Ihrem lokalen Computer. Beachten Sie, dass ihr das Präfix "remote" vorangestellt ist. Es ist die Remote , die fehlt rake, sodass wahrscheinlich nur ein Systemadministrator auf dieser Seite das Problem beheben kann.

Ich würde vorschlagen, dass Sie sich an denjenigen wenden, der Ihr Community-Git-Repository verwaltet.


Genau das habe ich mir gedacht. Keiner der Hooks in meinem Git-Repo ist aktiv, und bis jetzt scheint nichts, was ich getan habe, den Fehler zu ändern oder neue zu erstellen. Ich werde den Besitzer des Repos kontaktieren und prüfen, ob er Informationen zu dem Problem hat.
Joshua Strot

Es stellte sich heraus, dass das Problem darin bestand, dass ich versuchte, die HTTP-Methode zu übertragen, die auf ihrem GitLab nicht unterstützt wird. Sie müssen stattdessen über SSH pushen, was wunderbar funktioniert. Ich muss sagen, das habe ich nicht erwartet
Joshua Strot

0

Ich glaube, das ist dein Problem.

remote: error: hook declined to update refs/heads/master
To http://git.xxxxxx.org/community/testproject.git
 ! [remote rejected] master -> master (hook declined)

Suche nach diesem Fehler Ich bin auf SO auf diese Fragen und Antworten mit dem Titel gestoßen : error: hook lehnte es ab, refs / Heads / external_pub zu aktualisieren, während ein Zweig verschoben wurde .

Es scheint, dass es auf dem Server einen Git-Hook gibt , der den Push ablehnt.

Auszug

Serverseitige Hooks

Zusätzlich zu den clientseitigen Hooks können Sie als Systemadministrator einige wichtige serverseitige Hooks verwenden, um nahezu alle Arten von Richtlinien für Ihr Projekt durchzusetzen. Diese Skripte werden vor und nach dem Push an den Server ausgeführt. Die Pre-Hooks können jederzeit ungleich Null beendet werden, um den Push abzulehnen und eine Fehlermeldung an den Client zurückzusenden. Sie können eine Push-Richtlinie einrichten, die so komplex ist, wie Sie möchten.

Um festzustellen, warum diese Fehlermeldung angezeigt wird, müssen Sie herausfinden, welcher Haken Sie auslöst. Hooks werden im hooksOrdner im Git-Ordner (auf der Remote-Server-Seite) gespeichert. Suchen Sie den pre-receiveHook oder updateHook und überprüfen Sie, was Ihr Problem verursacht.


In meinem Hooks-Ordner befinden sich mehrere Dateien mit der Erweiterung .sample. Ich habe keinen Pre-Receive-Hook, es gibt jedoch einen Update-Hook. Da sie alle die Erweiterung .sample haben, glaube ich nicht, dass einer von ihnen verwendet wird. Könnte es also sein, dass es ein Hook auf dem Server ist, der mich ablehnt? Ich habe online gesucht und es gibt ein paar Leute mit meinem Problem, die es durch verschiedene Dinge behoben haben, von denen keine es in meinem Fall behoben hat.
Joshua Strot

0

Überprüfen Sie die Rolle / Gruppe und die Berechtigung im GIT-Repository. Mein Fall, nur die rote Berechtigung und die Auflösung nach Lese- / Schreibzugriff durch das GIT-Repository-Team


0

Hat @Radhakrishnan bereits vorgeschlagen, stehen Sie möglicherweise vor einem Berechtigungsproblem.

Wenn Sie Redmine Git Hosting verwenden , überprüfen Sie, ob Ihre Projet-Berechtigungs- Manager- Rolle dem Benutzer zugewiesen wurde, der versucht, die Tracking-Referenzen seines Git neu zu schreiben.

Bitte beachten Sie, dass ich davon ausgehe, dass Sie sich der Auswirkungen von Git Push-Force auf die anderen Benutzer bewusst sind , die möglicherweise denselben Remote-Zweig gemeinsam nutzen. Weitere Informationen finden Sie in diesem Artikel

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.