GIT Verweigerung in Stromzweig zu holen
Frage
ich ein Remote-Repository einrichten und ich kann neue Änderungen schieben, aber ich kann von ihm nicht holen, habe ich immer die (eher kryptischen) Fehlermeldung:
fatal: Refusing to fetch into current branch refs/heads/master of non-bare repository
fatal: The remote end hung up unexpectedly
Was bedeutet das? Was soll ich tun fetching aktivieren?
(Beachten Sie, dass diese Remote-Repo nur als Backup-Repo verwendet wird, so ist es ziemlich viel eine exakte Kopie von meinem lokalen Repository sein sollte. Ich kann wirklich nicht verstehen, warum ich es schieben kann, aber nicht von ihm holen .. ).
Meine Config sieht aus wie:
[remote "origin"]
url = ssh://blablablah
fetch = +refs/*:refs/*
mirror = true
Lösung
Was Sie versuchen zu tun, auf der Zweig Sie sind workin zu holen. Das heißt, Sie sind auf dem Master-Zweig und Sie versuchen, es zu aktualisieren. Das ist nicht möglich. Es ist eher üblich, die remotes/*
Zweige zu aktualisieren und dann in die auf lokaler Ebene ziehen. Was Sie wollen, ist vielleicht
git remote add otherrepo thehost:/the/path.git
Das wird Setup-Repository geholt werden in remotes/otherrepo/*
. git fetch otherrepo
sollte es tun. Alternativeley, können Sie Ihre .git/config
und Set fetch
für die Fernbedienung, um so etwas wie refs/heads/*:refs/remotes/otherrepo/*
manuell bearbeiten.
Andere Tipps
Falls sich jemand findet, weil sie speziell in den aktuellen Zweig holen wollen, können Sie die --update-head-ok
Flag verwenden. Aus docs :
-u
--update-Kopf-ok
Standardmäßig Git holen sich weigert, den Kopf zu aktualisieren, die auf den aktuellen Zweig entspricht. Dieses Flag wird die Prüfung deaktiviert. Dies ist rein für den internen Gebrauch für Git-Pull mit git zu kommunizieren holen, und , wenn Sie Ihr eigenen Porzellan implementieren sollte man es nicht benutzen.
In einigen Fällen wir wollen unsere eigenen Porzellan Befehle implementieren, beispielsweise Automatisierung und Werkzeuge.
Auch sollte dies dies funktionieren, wenn Sie in sind Master Zweig und will spätestens bekommen versuchen, dieses
git pull Ursprung Master
Ich habe dieses Problem hatte, als ich geklont gedankenlos ein Repository, anstatt sie zu holen, so dass beide Verwahrungs Meister waren. Wenn Sie keine Arbeit auf der Remote-Repository getan haben, können Sie die Dinge mit den grundlegenden git Befehlen beheben, wie folgt: (1), um die Remote-Repository löschen, (2) kopieren das lokale Repository, wo die Fern war, (3) löschen die lokale ein, und dann (4) das lokale Repository mit
einrichtengit init; git fetch $REMOTE_GIT_REPOSITORY_URL
Dann git pull
und git push
die richtigen Dinge tun. Der Vorteil git remote
Vermeidung pro Michaels effizienter und prinzipien Antwort ist, dass Sie nicht über die Semantik von Tracking-Zweig zu denken brauchen.
Ich habe das gleiche Problem. Zuerst versuche ich mit diesem
zu holengit fetch [remote_name] [branch_name]
Ich hatte das gleiche Problem, das Sie erwähnen. Danach habe ich versucht, diesen einfachen Befehl.
git pull [remote_name] [branch_name]
Hinweis wird holen und die Änderungen zusammenführen. Wenn Sie Terminal dann Datei öffnen verwenden, erfordern Nachricht zu begehen. Mit dieser Nachricht wird drücken Sie die neueste begehen. Versuchen Sie diesen Befehl und schließlich werden Sie in der Lage sein, die Anfrage zu drücken.
git push [remote_name] [branch_name_local]
tippen Sie tatsächlich Git Befehle in die Befehlszeile oder laufen Sie die Git ausführbare Datei aus Ihrem eigenen Code?
Wenn Sie es von Code ausführen, sind Sie sicher, dass Git versucht, in die richtige lokale Verzeichnis zu holen?
Es gibt zwei Möglichkeiten, dies zu tun:
-
Mit den von Ihrer Programmiersprache zur Verfügung stehenden Optionen des richtigen Arbeitsverzeichnis festlegen, bevor Git
Ausführung ( C # Beispiel , weil das ist, was ich verwende) -
Immer passieren -C Parameter Git href="https://stackoverflow.com/a/20115526/6884"> das Verzeichnis mit dem lokalen Repo angeben.
Ich habe ein Projekt, wo ich die Git ausführbare Datei von C # -Code mir anrufen, und ich habe die gleiche Fehlermeldung wie in der Frage, wenn ich aus Versehen den -C parameter
einzustellen vergessen.
fatal: Verweigern holen in der aktuellen Zweig refs / heads / branch von nicht-bare Repository
Ich habe einen Zweig branch Erstellt lokal dann ausgeführt Befehl " Git holen Upstream-Pull / ID / Kopf: Branchen " und bekam fatal: Verweigern in Stromzweig refs / heads / branch von nicht-bare Repository holen
dann gelöscht i den Zweig und rufen wieder die gleichen cmd es Wege in Ordnung.
Eigentlich Pull-Request Zweig i wurde Check-out.