wake-up-neo.net

Ihre Konfiguration gibt an, dass der Remote-Name mit dem <Zweignamen> zusammengeführt werden soll, es wurde jedoch kein solcher ref abgerufen.?

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
88
Farrukh Chishti

Was das bedeutet

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.

Was ist zu tun

Dies hängt davon ab, was Sie wollen. Siehe den Diskussionsabschnitt weiter unten. Du kannst:

  • erstellen Sie den Zweig auf der Fernbedienung oder erstellen Sie ihn erneut
  • löschen Sie Ihre lokale Niederlassung, oder
  • alles andere, was Sie sich vorstellen können.

Diskussion

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.

85
torek

Ü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. 

29
Malhaar Punjabi

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-nameannehmen 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)

26
Extreme

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.

2
nicko

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.

2
user1747134

Prüfen Sie einfach, ob jemand den Zweig an der Fernbedienung gelöscht hat.

2
AB Abhi

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
2
Nicola Gallazzi

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.

2
akgupta

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.

1
Stéphane

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.

0
Davvit

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.

0
Angelo Mendes

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.

0
Monalisa Das

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. 

0
user7550381