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:
- Erstellen Sie den Zweig auf der Fernbedienung oder erstellen Sie ihn neu
- Löschen Sie Ihre lokale Niederlassung oder
- alles andere, was Sie sich vorstellen können.
Diskussion
Sie müssen ausgeführt werden git pull
(wenn Sie ausgeführt werden git merge
, wird eine andere oder gar keine Fehlermeldung angezeigt).
Wenn Sie ausführen git fetch
, kontaktiert Ihr Git einen anderen Git, basierend auf der url
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, um git 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 mich git
selbst ausführe :
$ git ls-remote origin
From [url]
bbc61680168542cf6fd3ae637bde395c73b76f0f HEAD
60115f54bda3a127ed3cc8ffc6ab6c771cbceb1b refs/heads/maint
bbc61680168542cf6fd3ae637bde395c73b76f0f refs/heads/master
5ace31314f460db9aef2f1e2e1bd58016b1541f1 refs/heads/next
9e085c5399f8c1883cc8cdf175b107a4959d8fa6 refs/heads/pu
dd9985bd6dca5602cb461c4b4987466fa2f31638 refs/heads/todo
[snip]
In den refs/heads/
Einträgen werden alle auf der Fernbedienung vorhandenen Zweige 1 zusammen mit den entsprechenden Festschreibungs-IDs aufgelistet (bei refs/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 demselben remote
Abschnitt. In diesem Fall Ihre Git ersetzt refs/heads/master
mit refs/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 wird git fetch
auf der entsprechenden Fernbedienung ausgeführt und dann git merge
(oder, wenn dies angewiesen ist git 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 abrufen origin
und dann mit der ID zusammenführen sollen, die unter dem Namen gefunden wurde refs/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 dann git merge
(oder git rebase
), würde Ihr Git Ihre zwischengespeicherten remotes/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 Sie git fetch
mit --prune
(der tote Fernverfolgungszweige entfernt) gelaufen sind , so dass Sie keinen entsprechenden Fernverfolgungszweig haben, würden Sie eine Beschwerde erhalten, auf die origin/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 ist origin
.
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.