Dies ist wahrscheinlich eine dumme Frage, aber ich bin brandneu bei Git und sehe einen entfernten Zweig, der nicht mehr existiert.
$ git branch -a
* master
remotes/origin/master
remotes/origin/production
Ich glaube nicht, dass der Produktionszweig remote existiert und kann nicht herausfinden, warum er immer noch lokal angezeigt wird. Wie kann ich diesen Zweig löschen / entfernen? So sieht ein Versuch aus, es zu entfernen:
$ git push origin :production
error: unable to push to unqualified destination: production
The destination refspec neither matches an existing ref on the remote nor
begins with refs/, and we are unable to guess a prefix based on the source ref.
error: failed to push some refs to 'git@IP:puppet.git'
Ich kann den vermeintlich entfernten Produktionszweig auschecken, bekomme aber Folgendes:
$ git checkout origin/production
Note: checking out 'origin/production'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:
git checkout -b new_branch_name
HEAD is now at c323996... added powerdns module, no really
Ich habe keine Ahnung, was zum Teufel ich tue. Jede Hilfe wäre dankbar.
git branch -a
nach einemgit fetch
?Antworten:
Du musst:
quelle
Es gibt also zwei Probleme. Denken Sie in beiden Fällen daran, dass Git verteilt ist.
Zuerst. Wenn du Dinge wie machst
Der Vorgang wird auf Ihrem lokalen Repo ausgeführt, NICHT auf dem Remotecomputer. Mit anderen Worten, Ihr lokales Repo meldet alle Filialen, die bekannt sind. Dies können lokale Zweige (wie 'Master') oder entfernte Zweige sein, die von einer Fernbedienung abgerufen wurden . Seit dem letzten Abruf hat sich der 'Produktions'-Zweig des Remote-Repos geändert, aber Ihr lokales Repo weiß dies nicht. Die Antwort von manojlds ist richtig. Lauf
abgestandene Äste zu entfernen.
Der Befehl 'git push origin: Production' wird zum Löschen des Zweigs aus dem Git-Repo des Remotecomputers verwendet. Nicht dein lokales Repo. In diesem Fall hat bereits eine andere Person den Zweig im Git-Repo des Remotecomputers gelöscht, sodass diese Fehlermeldung angezeigt wird.
Hier ist ein Link , der diese Befehle zusammenfasst.
Das zweite Problem betrifft die Kaufabwicklung.
Wenn Sie einen Zweig auschecken, möchten Sie dies von einem lokalen Zweig aus tun , nicht von dem Remote-Zweig. Aus diesem Grund erhalten Sie die Fehlermeldung über einen abgetrennten HEAD. Das Git-Notes-Repo bietet eine gute Erklärung des Problems im Detail. Grundsätzlich lautet der Schlüsselbegriff
Wie kann man nun einen lokalen Zweig auschecken, der mit dem Remote-Zweig identisch ist?
Ganz einfach, Sie erstellen eine lokale Zweigstelle zum Zeitpunkt des Auscheckens der Remote-Zweigstelle.
quelle
ist richtig, wenn Sie nur hinzufügen, können Sie die
--dry-run
Option verwenden, die angibt, welche Zweige von Ihrem lokalen Repo entfernt werden, sie jedoch nicht wirklich beschneidetquelle