Git Pull zeigt "fatal: Remote Ref Refs / Heads / xxxx konnte nicht gefunden werden" und legt auf

74

Ich habe einen Zweig mit dem Namen '6796' erstellt, ihn dann auf Remote verschoben, auf einem anderen Computer ausgecheckt, andere Änderungen vorgenommen, verschoben, dann mit dem Master zusammengeführt und git push :6796auf dem anderen - lokal und remote ( ) - gelöscht Maschine. Wenn ich jetzt renne git pull:

fatal: Couldn't find remote ref refs/heads/6796
user@host:~/path/to/repo$ fatal: The remote end hung up unexpectedly

git pull origin masterfunktioniert aber normal. Es scheint mir, dass 6796 Referenzen auflegen ... wie kann man das lösen?

mdesantis
quelle

Antworten:

141

Es gibt wahrscheinlich einige Befehle, um das Problem zu beheben, aber ich würde zunächst in Ihrer .git/configDatei nach Verweisen auf diesen Zweig suchen und diese entfernen.

Karl Bielefeldt
quelle
8
Vielen Dank! Ich hatte diese Zeile in .git / config: [remote "origin"] fetch = +refs/heads/6796:refs/remotes/origin/6796 Ich denke, diese Zeile ist da, weil ich den Remote-Zweig gelöscht und von einem anderen Server entfernt habe. Auf diesem Server wusste Git von der Löschung und entfernte die Zeile in .git / config, aber hier wurde Git nicht über die Löschung benachrichtigt. Danke vielmals!
Mdesantis
Die prunevon @jweyrich bereitgestellte Option ist gut, um den Ursprungsstatus zu "aktualisieren"
v01pe
Suchen Sie nach .gitconfig in Ihrem Stammverzeichnis
Lior Elrom
21

Sie müssen auch den lokalen Zweig löschen:

git branch -d 6796

Eine andere Möglichkeit besteht darin, alle veralteten Zweige aus Ihrem lokalen Repository zu entfernen. Dadurch werden alle lokalen Zweige gelöscht, die bereits von der Fernbedienung entfernt wurden:

git remote prune origin --dry-run
jweyrich
quelle
Das ist ein guter Weg, dies zu tun (Git Remote Prune). Ist es möglich, dass Git etwas entfernt, das noch auf der Fernbedienung vorhanden ist? Ich meine, ist dieser Befehl gefährlich oder beschneidet er nur Zweige, die bereits von Remote gelöscht wurden
NickSoft
2
@ NickSoft, zitiert die offizielle Dokumentation :Deletes all stale tracking branches under <name>. These stale branches have already been removed from the remote repository referenced by <name>, but are still locally available in "remotes/<name>". With --dry-run option, report what branches will be pruned, but do no actually prune them.
Jweyrich
3

Ich hatte ein ähnliches Problem, als ich versuchte, einen Pull mit einem einfachen Anführungszeichen im Namen zu erhalten.

Ich musste dem Namen der Pull-Anfrage entkommen:

git pull https://github.com/foo/bar namewithsingle"'"quote
Santiaago
quelle
3

Dieser Fehler kann auch in der folgenden Situation auftreten.

Sie möchten den featurevom Remote-Repository aufgerufenen Zweig auschecken, der Fehler wird jedoch ausgelöst, da feature/<feature_name>in Ihrem lokalen Repository bereits ein Zweig aufgerufen wurde.

Kasse einfach die featureFiliale unter einem anderen Namen aus:

git checkout -b <new_branch_name> <remote>/feature
ikaruss
quelle
2

Ich bin gerade auf ein ähnliches Problem gestoßen, als ich versucht habe, ein neu erstelltes Repo mit einem "." in seinem Namen. Ich habe gesehen, dass mehrere andere unterschiedliche Probleme mit dem Setzen eines "" haben. im Repo-Namen.

Ich habe gerade das Repo neu erstellt und

replaced "." with "-"

Es gibt vielleicht andere Möglichkeiten, dies zu beheben, aber dies war eine schnelle Lösung für mich, da es sich um ein neues Repo handelte.

L_7337
quelle
Was meinst du mit Name?
0xcaff
1

Um einen Remote-Zweig lokal abzurufen, gehe ich wie folgt vor:

git checkout -b branchname // erstellt einen lokalen Zweig mit demselben Namen und checkt ihn aus

git pull origin branchname // zieht die Fernbedienung auf Ihre lokale

Das einzige Mal, als ich dies tat und es nicht funktionierte, löschte ich das Repo, klonte es erneut und wiederholte die obigen 2 Schritte. es funktionierte.

Polyccon
quelle
1

Ich habe den gleichen Fehler. Problem war, dass Zweig gelöscht, freigegeben wurde. Aber in PhpStorm konnte ich es immer noch in entfernten Filialen sehen. Ich könnte als lokale Filiale auschecken. Und dann gab Git Pull diesen Fehler.

Sie müssen also überprüfen, ob diese Nachricht wirklich remote vorhanden ist.

Darius.V
quelle
0

In meinem Fall geschah es für die Hauptniederlassung. Später stellte ich fest, dass mein Zugriff auf das Projekt vom Projektmanager versehentlich widerrufen wurde. Zur Gegenprüfung habe ich die Überprüfungsseite besucht und konnte keine Commits der genannten Branche und anderer für dieses Projekt sehen.

Padmanabha V.
quelle