Ich bekomme diesen Fehler für Pull:
Ihre Konfiguration gibt an, dass sie mit der Referenznummer zusammengeführt werden soll. 'refs/heads/feature/Sprint4/ABC-123-Branch' von der Fernbedienung aus, aber keine ein solcher ref wurde abgerufen.
Dieser Fehler tritt für keine andere Branche auf.
Das Besondere an diesem Zweig ist, dass er aus dem vorherigen Commit eines anderen Zweigs erstellt wird.
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
Ihr Upstream - die Gegenstelle, die Sie Origin
nennen - hat keinen Zweig mit dem Namen feature/Sprint4/ABC-123-Branch
Mehr oder hatte ihn vielleicht nie (allein anhand dieser Informationen ist es unmöglich zu sagen). Dafür gibt es einen besonders häufigen Grund: Jemand (wahrscheinlich nicht Sie, oder Sie erinnern sich) hat den Zweig in diesem anderen Git-Repository gelöscht.
Dies hängt davon ab, was Sie wollen. Siehe den Diskussionsabschnitt weiter unten. Du kannst:
Sie müssen git pull
Ausführen (wenn Sie git merge
Ausführen, wird eine andere oder gar keine Fehlermeldung angezeigt).
Wenn Sie git fetch
Ausführen, kontaktiert Ihr Git einen anderen Git, basierend auf der Zeile url
im Abschnitt [remote "Origin"]
Ihrer Konfiguration. Dieser Git führt einen Befehl aus (upload-pack
), Der unter anderem Ihr Git eine Liste aller Zweige sendet. Sie können git ls-remote
Verwenden, um 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 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]
Die Einträge refs/heads/
Listen alle Zweige auf, die auf der Fernbedienung existieren.1 zusammen mit den entsprechenden Festschreibungs-IDs (für refs/tags/
- Einträge verweisen die IDs möglicherweise eher auf Objekte als auf Festschreibungen).
Ihr Git nimmt jeden dieser Zweignamen und ändert sich entsprechend der fetch
Zeile (n) in demselben remote
Abschnitt. In diesem Fall ersetzt Ihr Git beispielsweise refs/heads/master
Durch refs/remotes/Origin/master
. Dein Git macht das mit jedem Zweignamen, der rüberkommt.
Es zeichnet auch die ursprünglichen Namen in der speziellen Datei FETCH_HEAD
Auf (Sie können diese Datei sehen, wenn Sie in Ihr eigenes .git
- Verzeichnis schauen). Diese Datei speichert die abgerufenen Namen und IDs.
Der Befehl git pull
Ist als praktische Abkürzung gedacht: Er führt git fetch
Auf der entsprechenden Fernbedienung und dann git merge
(Oder, falls angewiesen, git rebase
) Aus. ) mit allen Argumenten, die zum Zusammenführen (oder erneuten Basieren) erforderlich sind, wie im Abschnitt [branch ...]
angegeben. In diesem Fall heißt es in Ihrem Abschnitt [branch "feature/Sprint4/ABC-123-Branch"]
, Dass Sie von Origin
abrufen und dann mit der ID zusammenführen sollen, die unter dem Namen refs/heads/feature/Sprint4/ABC-123-Branch
Gefunden wurde.
Da unter diesem Namen nichts gefunden wurde, beschwert sich git pull
Und stoppt.
Wenn Sie dies in zwei separaten Schritten ausführen, git fetch
Und dann git merge
(Oder git rebase
), Wird Ihr Git Ihre zwischengespeicherten remotes/Origin/
Remote-Tracking-Zweige untersuchen um zu sehen, worauf man verschmelzen oder zurückgreifen kann. Wenn es was zu einem Zeitpunkt einen solchen Zweig gibt, haben Sie möglicherweise immer noch den Fernverfolgungszweig. In diesem Fall erhalten Sie keine Fehlermeldung. Wenn es noch nie einen solchen Zweig gegeben hätte oder wenn Sie git fetch
Mit --Prune
Ausgeführt hätten (was tote Fernverfolgungszweige entfernt), so dass Sie keinen entsprechenden Fernverfolgungszweig hätten, würden Sie erhalten eine Beschwerde, die sich aber stattdessen auf Origin/feature/Sprint4/ABC-123-Branch
beziehen würde.
In beiden Fällen, wir können daraus schließen, dass feature/Sprint4/ABC-123-Branch
Jetzt nicht auf der Fernbedienung mit dem Namen Origin
existiert.
Wahrscheinlich gab es sie zu einem bestimmten Zeitpunkt, und Sie haben wahrscheinlich Ihre lokale Zweigstelle aus der Zweigstelle für die Fernverfolgung erstellt. Wenn ja, haben Sie wahrscheinlich immer noch den Zweig für die Fernverfolgung. Sie können nachforschen, wer den Zweig von der Fernbedienung entfernt hat und warum, oder Sie können einfach einen Push-Vorgang ausführen, um ihn neu zu erstellen, oder Ihren Zweig für die Fernverfolgung und/oder Ihren lokalen Zweig löschen.
1Na ja, alles, was es zu zugeben machen wird, zumindest. Aber es sei denn, sie haben ausdrücklich einige Verweise versteckt, enthält die Liste alles.
Überprüfen Sie, ob Ihr Remote-Zweig verfügbar ist. Ich hatte das gleiche Problem und stellte schließlich fest, dass der Remote-Zweig von jemandem gelöscht wurde.
Dies kann auch passieren, wenn Sie/jemand den Zweig umbenannt hat. Gehen Sie folgendermaßen vor (wenn Sie wissen, dass der Zweigname umbenannt wird) Wenn Sie den früheren Zweignamen alswrong-branch-name
annehmen und jemand ihn incorrect-branch-name
So.
git checkout correct-branch-name
git pull
(Sie sehen dies "Ihre Konfiguration gibt an ...")
git branch --unset-upstream
git Push --set-upstream Origin correct-branch-name
git pull
(die vorherige Nachricht wird nicht angezeigt)
Für mich war es ein Problem mit der Vertraulichkeit. Mein lokaler Zweig war Version_feature2 anstelle von Version_Feature2. Ich überprüfte meinen Zweig noch einmal mit dem richtigen Gehäuse und arbeitete dann mit dem Zug.
Ich habe einen ähnlichen Fehler erhalten, als die Ursache war, dass meine Festplatte voll war. Nachdem einige Dateien gelöscht wurden, funktionierte git pull
wie erwartet.
Prüfen Sie einfach, ob jemand den Zweig an der Fernbedienung gelöscht hat.
In meinem Fall fehlte mir einfach das anfängliche Festschreiben für die entfernte Zweigstelle, sodass die lokale Zweigstelle nichts zu ziehen fand und diese Fehlermeldung angezeigt wurde.
Ich tat:
git commit -m 'first commit' // on remote branch
git pull // on local branch
Dieser Fehler kann auch empfangen werden, wenn der Origin-Zweigname ein Fallproblem hat.
Beispiel: Origin-Zweig ist team1-Team
und der lokale Zweig wurde als team1-team
ausgecheckt. Dann kann diese T
in -Team
und t
in -team
einen solchen Fehler verursachen. Das ist in meinem Fall passiert. Durch Ändern des lokalen Namens mit dem Namen des Origin-Zweigs wurde der Fehler behoben.
Ich bin immer wieder auf dieses Problem gestoßen. In meinem Fall war @ Jerrecks Kommentar zu den Fallunterschieden in den Zweignamen die Ursache für diesen Fehler. Einige Windows-Tools berücksichtigen die Groß- und Kleinschreibung nicht.
Führen Sie den folgenden Befehl aus, um die Groß- und Kleinschreibung in Git zu deaktivieren:
git config --global core.ignorecase true
Beachten Sie, dass dies mehr als nur Zweignamen betrifft. Wenn Sie beispielsweise "Foo.h" und "foo.h" im selben Verzeichnis haben (keine gute Idee, wenn Sie Software für Windows erstellen), können Sie die Groß-/Kleinschreibung vermutlich nicht deaktivieren.
Für mich ist dies der Fall, weil ich einen Zweig dev mit einem Webinterface in master zusammengeführt habe und dann versucht habe, VSCode zu synchronisieren/zu ziehen, der auf dev-Zweig geöffnet war.
git pull
Your configuration specifies to merge with the ref 'refs/heads/dev'
from the remote, but no such ref was fetched.'
Es ist sinnvoll, dass es nicht refs/heads/dev findet - für mich war es einfacher, den lokalen Ordner zu löschen und erneut zu klonen.
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 after run git fetch
mit Repository-URL.
Ich stand vor dem gleichen Problem, bei dem mein aktueller Zweig Entwickler war, und checkte zum MR-Zweig aus und machte danach Git-Pull. Ein einfacher Workaround 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 den Code in einen anderen Zweig zu verschieben.
In meinem Fall hatte ich den ursprünglichen Zweig gelöscht, von dem mein aktueller Zweig abgeleitet war. Also hatte ich in der .git/config-Datei:
[branch "simil2.1.12"]
remote = Origin
merge = refs/heads/simil2.0.5
rebase = false
das simil2.0.5 wurde gelöscht. Ich habe es durch denselben Filialnamen ersetzt:
[branch "simil2.1.12"]
remote = Origin
merge = refs/heads/simil2.1.12
rebase = false
und es hat funktioniert
Ich habe genau diese Fehlermeldung erhalten, als "git pull" ausgeführt wurde, als meine Festplatte voll war. Etwas Platz geschaffen und alles hat wieder gut funktioniert.