Ich erhalte diesen Fehler beim Ziehen:
Ihre Konfiguration gibt an, dass mit der Referenz 'refs / Heads / Feature / Sprint4 / ABC-123-Branch' von der Fernbedienung zusammengeführt werden soll, aber es wurde keine solche Referenz abgerufen.
Dieser Fehler tritt bei keinem anderen Zweig auf.
Das Besondere an diesem Zweig ist, dass er aus dem vorherigen Commit eines anderen Zweigs erstellt wurde.
Meine Konfigurationsdatei sieht folgendermaßen aus:
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true
hideDotFiles = dotGitOnly
[remote "origin"]
url = <url here>
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
[branch "new-develop"]
remote = origin
merge = refs/heads/new-develop
[branch "feature/Sprint4/ABC-123-Branch"]
remote = origin
merge = refs/heads/feature/Sprint4/ABC-123-Branch
Antworten:
Was das bedeutet
Ihr Upstream - die von Ihnen angerufene Fernbedienung
origin
- hat oder hat möglicherweise nie mehr einen Zweig mit dem Namen (es ist unmöglich, allein anhand dieser Informationen zu erkennen)feature/Sprint4/ABC-123-Branch
. Dafür gibt es einen besonders häufigen Grund: Jemand (wahrscheinlich nicht Sie oder Sie würden sich erinnern) hat den Zweig in diesem anderen Git-Repository gelöscht.Was ist zu tun
Dies hängt davon ab, was Sie wollen . Siehe den Diskussionsteil unten. Sie können:
Diskussion
Sie müssen ausgeführt werden
git pull
(wenn Sie ausgeführt werdengit merge
, wird eine andere oder gar keine Fehlermeldung angezeigt).Wenn Sie ausführen
git fetch
, kontaktiert Ihr Git einen anderen Git, basierend auf derurl
Zeile im[remote "origin"]
Abschnitt Ihrer Konfiguration. Dieser Git führt einen Befehl (upload-pack
) aus, der Ihrem Git unter anderem eine Liste aller Zweige sendet . Sie können verwenden, umgit ls-remote
zu sehen, wie dies funktioniert (versuchen Sie es, es ist lehrreich). Hier ist ein Ausschnitt dessen, was ich bekomme, wenn ich dies auf einem Git-Repository für michgit
selbst ausführe :In den
refs/heads/
Einträgen werden alle auf der Fernbedienung vorhandenen Zweige 1 zusammen mit den entsprechenden Festschreibungs-IDs aufgelistet (beirefs/tags/
Einträgen können die IDs eher auf Tag-Objekte als auf Festschreibungen verweisen).Ihr Git nimmt jeden dieser Zweignamen und ändert ihn entsprechend den
fetch
Zeilen in demselbenremote
Abschnitt. In diesem Fall Ihre Git ersetztrefs/heads/master
mitrefs/remotes/origin/master
, zum Beispiel. Ihr Git tut dies mit jedem Zweignamen, der auftaucht.Es zeichnet auch die ursprünglichen Namen in der speziellen Datei auf
FETCH_HEAD
(Sie können diese Datei sehen, wenn Sie in Ihr eigenes.git
Verzeichnis schauen ). Diese Datei speichert die abgerufenen Namen und IDs.Der
git pull
Befehl ist als praktische Abkürzung gedacht: Er wirdgit fetch
auf der entsprechenden Fernbedienung ausgeführt und danngit merge
(oder, wenn dies angewiesen istgit rebase
) mit allen Argumenten, die zum Zusammenführen (oder erneuten Basieren) gemäß den Anweisungen des[branch ...]
Abschnitts erforderlich sind . In diesem Fall[branch "feature/Sprint4/ABC-123-Branch"]
sagt Ihr Abschnitt, dass Sie abrufenorigin
und dann mit der ID zusammenführen sollen, die unter dem Namen gefunden wurderefs/heads/feature/Sprint4/ABC-123-Branch
.Da unter diesem Namen nichts gefunden wurde,
git pull
beschwert sich und hört auf.Wenn Sie dies als zwei separate Schritte ausführen
git fetch
und danngit merge
(odergit rebase
), würde Ihr Git Ihre zwischengespeichertenremotes/origin/
Remote-Tracking-Zweige überprüfen, um festzustellen, mit was zusammengeführt oder neu aufgebaut werden soll. Wenn es war eine solche Verzweigung zu einer Zeit, haben Sie immer noch die Fernverfolgung Zweig. In diesem Fall erhalten Sie keine Fehlermeldung. Wenn es nie einen solchen Zweig gegeben hätte oder wenn Siegit fetch
mit--prune
(der tote Fernverfolgungszweige entfernt) gelaufen sind , so dass Sie keinen entsprechenden Fernverfolgungszweig haben, würden Sie eine Beschwerde erhalten, auf dieorigin/feature/Sprint4/ABC-123-Branch
stattdessen verwiesen wird.In beiden Fällen können wir den Schluss ziehen, dass
feature/Sprint4/ABC-123-Branch
dies auf der genannten Fernbedienung derzeit nicht vorhanden istorigin
.Es war wahrscheinlich einmal vorhanden, und Sie haben wahrscheinlich Ihren lokalen Zweig aus dem Remote-Tracking-Zweig erstellt. Wenn ja, haben Sie wahrscheinlich noch den Remote-Tracking-Zweig. Sie können untersuchen, wer den Zweig von der Fernbedienung entfernt hat und warum, oder Sie können einfach etwas drücken, um ihn neu zu erstellen, oder Ihre Fernverfolgungsniederlassung und / oder Ihre lokale Niederlassung löschen.
1 Nun, zumindest alles, was es zugeben wird. Aber wenn sie nicht ausdrücklich einige Refs versteckt haben, enthält die Liste alles.
quelle
git remote prune origin
git fetch --prune origin
oder Satzfetch.prune
zutrue
in Ihrer Konfiguration (alle drei sollen die gleiche Sache zu tun, obwohl in einigen Versionen von Git diese einige nicht ganz zuverlässig waren).git checkout <your remote branch>
und alle gut sein (in einigen Fällen).git branch --set-upstream-to=origin/master master
, um die Upstream-Einstellung für Ihre lokale zu ändernmaster
. Das Löschen und Neuerstellen hat dies als Nebeneffekt (vorausgesetzt, Sie verwenden den DWIM-Stilgit checkout master
, um es zu erstellen), mit einem zusätzlichen Nebeneffekt, der dazu führt, dass Sie gezwungen werdenmaster
, mit Ihrem übereinzustimmenorigin/master
.Dies kann auch passieren, wenn Sie / jemand den Zweig umbenannt hat. Befolgen Sie also diese Schritte (wenn Sie wissen, dass der Filialname umbenannt wurde). Nehmen Sie an, dass der frühere Filialname als
wrong-branch-name
und jemand ihn incorrect-branch-name
So umbenannt hat .git pull
(Sie sehen dies "Ihre Konfiguration spezifiziert ..")git push --set-upstream origin correct-branch-name
git pull
(Sie erhalten die frühere Nachricht nicht)quelle
git push
und es wird nicht funktionieren, wenn sich der aktuelle Zweig hinter seiner Fernbedienung befindet.git pull origin correct-branch-name
reicht.Überprüfen Sie, ob Ihr Remote-Zweig zum Ziehen verfügbar ist. Ich hatte das gleiche Problem und stellte schließlich fest, dass der Remote-Zweig von jemandem gelöscht wurde.
quelle
Für mich war es ein Problem mit der Groß- und Kleinschreibung. Mein lokaler Zweig war Version_feature2 anstelle von Version_Feature2. Ich habe meinen Zweig mit dem richtigen Gehäuse erneut ausgecheckt und dann hat Git Pull funktioniert.
quelle
Dieser Fehler kann auch auftreten, wenn der Name des Ursprungszweigs ein Fallproblem aufweist.
Beispiel: Ursprungszweig ist
team1-Team
und der lokale Zweig wurde als ausgechecktteam1-team
. Dann kann diesT
in-Team
undt
in-team
einen solchen Fehler verursachen. Dies geschah in meinem Fall. Durch Ändern des lokalen Namens mit dem Namen des Ursprungszweigs wurde der Fehler behoben.quelle
In meinem Fall fehlte mir einfach das anfängliche Commit für den Remote-Zweig, sodass der lokale Zweig nichts zum Abrufen fand und diese Fehlermeldung ausgab.
Ich tat:
quelle
Ich habe einen ähnlichen Fehler erhalten, als die eigentliche Ursache darin bestand, dass meine Festplatte voll war. Nachdem
git pull
ich einige Dateien gelöscht hatte, begann ich wie erwartet zu arbeiten.quelle
Ich bin immer wieder auf dieses Problem gestoßen. In meinem Fall war @ Jerrecks Kommentar zu Fallunterschieden in den Filialnamen die Ursache für diesen Fehler. Einige Windows-Tools kennen die Groß- und Kleinschreibung nicht.
Führen Sie den folgenden Befehl aus, um die Groß- und Kleinschreibung in Git zu deaktivieren:
Beachten Sie, dass dies mehr als nur Zweignamen betrifft. Wenn Sie beispielsweise "Foo.h" und "foo.h" im selben Verzeichnis haben (keine gute Idee beim Erstellen von Software für Windows), können Sie die Groß- und Kleinschreibung vermutlich nicht deaktivieren.
quelle
Überprüfen Sie einfach, ob jemand den Zweig auf der Fernbedienung gelöscht hat.
quelle
In meinem Fall hatte ich den ursprünglichen Zweig gelöscht, von dem mein aktueller Zweig abgeleitet war. Also in der .git / config Datei hatte ich:
das simil2.0.5 wurde gelöscht. Ich habe es durch den gleichen Filialnamen ersetzt:
und es hat funktioniert
quelle
Sie können Ihren lokalen Zweig einfach mit einem Remote-Zweig verbinden, indem Sie Folgendes ausführen:
quelle
Für mich geschah dies, weil ich einen Zweigentwickler über die Weboberfläche mit dem Master zusammenführte und dann versuchte, ihn mit VSCode zu synchronisieren / zu ziehen, der auf dem Entwicklungszweig geöffnet war. (Es ist seltsam, dass ich ohne diesen Fehler nicht zum Master wechseln konnte.)
Es macht Sinn, dass es nicht refs / Heads / Dev findet - für mich war es einfacher, einfach den lokalen Ordner zu löschen und erneut zu klonen.
quelle
Ich habe gerade genau diesen Fehler erhalten, als ich "git pull" gemacht habe, als meine Festplatte voll war. Hat etwas Platz geschaffen und alles hat wieder gut funktioniert.
quelle
Sie können die
~/.gitconfig
Datei in Ihrem Home-Ordner bearbeiten . Hier werden alle globalen Einstellungen gespeichert.Oder verwenden Sie
git config --global --unset-all remote.origin.url
und nach dem Ausführengit fetch
mit der Repository-URL.quelle
Ich hatte das gleiche Problem, bei dem mein aktueller Zweig Entwickler war, und ich checkte zum MR-Zweig aus und machte danach Git Pull. Eine einfache Problemumgehung war, dass ich einen neuen Ordner für MR Branch erstellt und dort git pull gefolgt von git clone ausgeführt habe.
Im Grunde habe ich verschiedene Ordner gepflegt, um Code in verschiedene Zweige zu verschieben.
quelle
Ich habe gerade den gleichen Fehler erhalten, als ich nicht den richtigen Fall verwendet habe. Ich könnte 'Integration' auschecken. Git sagte mir, ich solle ein durchführen
git pull
, um meinen Zweig zu aktualisieren. Ich habe das getan, aber den genannten Fehler erhalten. Der korrekte Filialname lautet "Integration" mit einem Großbuchstaben "I". Als ich diesen Zweig auscheckte und zog, funktionierte es ohne Probleme.quelle
Wenn ein anderer Pull nur funktioniert, bedeutet dies, dass Ihr Internet nicht verbunden war.
quelle