Wie entfernen Sie eine ungültige entfernte Zweig Referenz von Git?
-
21-08-2019 - |
Frage
In meinem aktuellen Repo Ich habe die folgende Ausgabe:
$ git branch -a
* master
remotes/origin/master
remotes/public/master
Ich mag remotes/public/master
aus der Zweigliste löschen:
$ git branch -d remotes/public/master
error: branch 'remotes/public/master' not found.
Auch die Ausgabe von git remote
seltsam, da es nicht public
auflistet:
$ git remote show
origin
Wie kann ich 'Fernbedienungen / public / Master' aus der Zweigliste löschen?
Update, versucht, die git push
Befehl:
$ git push public :master
fatal: 'public' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
Lösung
Sie könnte eine Bereinigung
mehr brauchengit gc --prune=now
oder Sie können eine Pflaume
mehr brauchengit remote prune public
prune
Löscht alle veralteten Tracking-Zweige unter
. Diese veraltete Filialen wurden bereits aus dem Remote-Repository referenziert von entfernt worden ist, sind aber immer noch lokal in „Fernbedienungen / “. Mit --dry-run Option, berichten, was Zweige zurückgeschnitten werden, sie aber nicht, sie tatsächlich beschneiden.
Es scheint jedoch, diese mit früher gereinigt werden sollten
git remote rm public
rm
Nehmen Sie die Remote-Namen
. Alle Tracking-Remote-Niederlassungen und Konfigurationseinstellungen für die Fern werden entfernt.
So könnte es sein, das Sie Ihre Konfigurationsdatei von Hand bearbeitet und dies nicht auftreten, oder Sie haben Privileg Probleme.
Vielleicht laufen wieder und sehen, was passiert.
Rat Kontext
Wenn Sie einen Blick in die nehmen Revisionsprotokolle , werden bemerken Sie, schlug ich vor mehr „richtige“ Techniken, die aus irgendeinem Grund wollte nicht auf ihre Repository arbeiten.
ich vermutet hatten die OP etwas getan, das ihren Baum in einem inkonsistenten Zustand, dass es ein bisschen seltsam verhalten verursacht und git gc
war erforderlich, die links hinter cruft zu reparieren.
Regel git branch -rd origin/badbranch
ausreichend ist, einen lokalen Tracking-Zweig für nuking oder git push origin :badbranch
für einen entfernten Zweig nuking und in die Regel Sie nie müssen Aufruf git gc
Andere Tipps
Alles, was Sie tun müssen, ist
git fetch -p
Es wird alle Ihre lokalen Zweige entfernen, die remote gelöscht werden.
Wenn Sie auf git sind 1.8.5+ Sie diese automatisch einstellen
git config fetch.prune true
oder
git config --global fetch.prune true
git push public :master
Dies würde den Remote-Zweig namens master
löschen, wie Kent Fredric hat darauf hingewiesen.
Remote-Tracking-Zweige aufzulisten:
git branch -r
Um einen Remote-Tracking-Zweig zu löschen:
git branch -rd public/master
Alles, was Sie tun müssen, ist
$ git branch -rd origin/whatever
Es ist so einfach. Es gibt keinen Grund, hier eine gc zu nennen.
git gc --prune=now
ist nicht das, was Sie wollen.
git remote prune public
oder git remote prune origin
# wenn das ist das die entfernte Quelle
ist, was Sie wollen
Die akzeptierte Antwort funktioniert nicht für mich, wenn der Schiedsrichter war brechend voll. Dies gilt jedoch:
$ git remote add public http://anything.com/bogus.git
$ git remote rm public
In meinem Fall habe ich versucht, Einträge zu löschen, die in .git/packed-refs
gespeichert wurden. Sie können diese Textdatei bearbeiten und löschen Einträge aus, dass git br -D
weiß nicht, wie zu berühren (zumindest in ver 1.7.9.5).
ich diese Lösung finden Sie hier: https://stackoverflow.com/a/11050880/1695680
git push origin --delete <branch name>
Wird benutzt von: http://www.gitguys.com/ Themen / Addier-und-Entfernungs-Remote-Niederlassungen /
Ich hatte ein ähnliches Problem. Keine der Antworten half. In meinem Fall hatte ich zwei entfernten Remote-Repositories permanent zeigt sich.
Meine letzte Idee, alle Verweise auf sie von Hand zu entfernen war.
Ermöglicht das Repository sagen wird „Repo“ genannt. Ich habe:
find .git -name Repo
und löschte die entsprechenden Dateien und Verzeichnisse
grep Repo -r .git
Dieses fand einige Textdateien, in denen ich die entsprechenden Zeilen entfernt. Nun scheint alles in Ordnung zu sein.
In der Regel sollten Sie diesen Job verlassen git.
Ich wusste nicht, über git branch -rd
, so wie ich Fragen wie diese für mich gelöst habe, ist meine Repo als Remote-Repo zu behandeln und eine Fern löschen tun. git push . :refs/remotes/public/master
. Wenn die anderen Möglichkeiten nicht funktionieren und Sie einige seltsame Bezug haben Sie wollen, um loszuwerden, diese rohe Weise ist todsichere. Es gibt Ihnen die genaue Präzision zu entfernen (oder erstellen!) Jede Art von Referenz.
Nur wenig verwandt, aber dennoch könnte in der gleichen Situation hilfreich sein, da wir hatten - wir eine Netzwerk-Dateifreigabe für unsere Remote-Repository verwenden. Letzte Woche Dinge funktionierten, diese Woche haben wir den Fehler „Remote Herkunft werben nicht Ref für Zweig refs / heads / master. Diese Ref nicht in der Fernbedienung existieren können oder durch Berechtigungseinstellungen ausgeblendet werden“ wurden immer
Aber wir glaubten, nichts war zu verderben Dinge geschehen. Die NFS tut Schnappschüsse, damit ich jede „Vorversion“ überprüft und sah, dass vor drei Tagen hatte sich die Größe in MB des Endlagers von 282MB zu 33MB gegangen, und über 1403 neue Dateien und 300 Ordner jetzt existierte. Ich fragte meine Mitarbeiter und hatte man versucht, einen Push an diesem Tag zu tun -. Dann abgebrochen es
ich verwende, um die NFS „Restore“ -Funktion, um sie wiederherzustellen, um kurz vor diesem Zeitpunkt und jetzt every arbeitet wieder in Ordnung. Ich habe die Prune versuchen zuvor, didnt zu helfen scheinen. Vielleicht hätten die härteren Cleanups gearbeitet.
Hope dies könnte jemand anderes ein Tag helfen!
Jay