2015-12-14 21 views
10

Ich verfolge diese Dokumentation: https://help.github.com/articles/duplicating-a-repository/! [Remote abgelehnt] Fehler nach einem Git-Repository-Spiegelung

git clone --mirror https://github.com/exampleuser/repository-to-mirror.git 

cd repository-to-mirror.git 

git push --mirror https://github.com/exampleuser/mirrored 

Die Ausgabe zeigt, dass das Repository als Spiegel geschoben wird, aber aus irgendeinem Grunde erhalte ich diese Fehler auch:

! [remote rejected] refs/pull/1/head -> refs/pull/1/head (deny updating a hidden ref) 
! [remote rejected] refs/pull/1/merge -> refs/pull/1/merge (deny updating a hidden ref) 

Was sind diese Fehler? Kann ich davon ausgehen, dass das Repository gespiegelt wurde?

Antwort

14

Wie in this issue erwähnt, passiert das, wenn Sie einen GitHub Repo spiegeln, der Pull-Anforderungen hat, die daran gemacht werden.

Die Refs Anfang ‚refs/pull‘ sind synthetische read-only von GitHub erstellt Refs - man kann nicht aktualisiert werden (und damit ‚saubere‘), um sie, weil sie Zweige reflektieren, die von anderen Repositories auch tatsächlich kommen kann - diejenigen, die Pull-Requests an Sie gesendet haben.

So, während Sie alle Ihre echte Refs geschoben haben, die Pull-Anfragen werden nicht

aktualisiert

Sie würden zu mirror a GitHub repo without their pull requests benötigen.

Ersetzen Sie einfach die Catch-all Refspec oben mit zwei spezifischere Angaben zu enthalten nur alle Köpfe und Tags, nicht aber die zieht, und alle Remote Pull Refs wird nicht mehr in der bloßen Spiegel machen:

fetch = +refs/heads/*:refs/heads/* 
fetch = +refs/tags/*:refs/tags/* 
fetch = +refs/change/*:refs/change/* 
+0

Danke, ich ging durch das Verfahren, aber aus irgendeinem Grund bekomme ich immer noch den gleichen Fehler. Ich klon den Repo mit --mirror, editiere die Git-Konfiguration mit 'git config -e' und führe -' git remote update' und 'git push mirror' aus und bekomme immer noch den gleichen Fehler. – deez

+0

@deezx Was gibt 'git config --get-regex remote.origin.fetch' zurück? – VonC

+0

Dies ist die Ausgabe- $ git config --get-regex remote.origin.fetch remote.origin.fetch + refs/heads/*: refs/heads/* remote.origin.fetch + refs/tags/*: refs/tags/* Eigentlich, als ich das Repository ohne --mirror geklont habe, bearbeitet die git config wie du geschrieben hast, es hat funktioniert. es hat nur Zweige und Tags geholt, also hat es funktioniert! Meine einzige Frage ist jetzt, dass ich sehe, dass es die "Refs/Änderungen" nicht widerspiegelt. Gibt es eine Möglichkeit, git ALL zu sagen, außer Pull Requests ('refs/pull')? – deez