In meinem aktuellen Repo habe ich folgende Ausgabe:
$ git branch -a
* master
remotes/origin/master
remotes/public/master
Ich möchte remotes/public/master
aus der Branchenliste löschen :
$ git branch -d remotes/public/master
error: branch 'remotes/public/master' not found.
Auch die Ausgabe von git remote
ist seltsam, da sie nicht auflistet public
:
$ git remote show
origin
Wie kann ich 'remotes / public / master' aus der Filialliste löschen?
Update, versuchte den git push
Befehl:
$ git push public :master
fatal: 'public' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
git
branch
remote-branch
cmcginty
quelle
quelle
git remote prune [remote-name]
odergit fetch -p [remote-name]
nicht? Dies zu tungit gc
ist viel kraftvoller als normalerweise erforderlich.git remote prune [remote-name]
wird nicht funktionieren mit git svn, obwohl auch nichtgit gc
...git branch -rd origin/name
funktioniert aber. @Casey, du solltest wahrscheinlich die zweite Antwort auswählen - es ist etwas weniger gefährlich.master
..., insbesondere beim Löschen auf der Fernbedienung.Antworten:
Möglicherweise benötigen Sie eine Bereinigung:
oder Sie benötigen möglicherweise eine Pflaume:
Es scheint jedoch, dass diese früher mit bereinigt worden sein sollten
Möglicherweise haben Sie Ihre Konfigurationsdatei von Hand bearbeitet und dies ist nicht aufgetreten, oder Sie haben Probleme mit Berechtigungen.
Führen Sie das vielleicht noch einmal durch und sehen Sie, was passiert.
Beratungskontext
Wenn Sie sich die Revisionsprotokolle ansehen , werden Sie feststellen, dass ich mehr "korrekte" Techniken vorgeschlagen habe, die aus irgendeinem Grund nicht an ihrem Repository arbeiten wollten.
Ich vermutete, dass die OP etwas getan hatte, das ihren Baum in einem inkonsistenten Zustand
git gc
zurückließ , der dazu führte, dass er sich etwas seltsam verhielt , und dass die zurückgelassene Kruft repariert werden musste.Normalerweise reicht
git branch -rd origin/badbranch
es aus, um einen lokalen Tracking-Zweig odergit push origin :badbranch
einen Remote-Zweig zu zerstören, und normalerweise müssen Sie nie anrufengit gc
quelle
git gc
wird hier nicht benötigt, abergit remote prune
ich fühle mich sicherer als das manuelle Löschen von Dingen mitgit branch -rd
, da git überprüft, welche Remote-Zweige ausgeführt werden.Alles was Sie tun müssen, ist
Es werden alle Ihre lokalen Zweige entfernt, die remote gelöscht werden.
Wenn Sie auf Git 1.8.5+ sind, können Sie dies automatisch einstellen
oder
quelle
Dies würde den entfernten Zweig löschen, auf den
master
Kent Fredric hingewiesen hat.So listen Sie Remote-Tracking-Zweige auf:
So löschen Sie einen Remote-Tracking-Zweig:
quelle
git branch -rd removed_remote/branch
arbeitete für mich, während dasgit gc --prune=now
wertlos war.git prune
ohne Probleme arbeiten, aber mein Kollege, der unser Haupt-Repo gabelte ** KÖNNTE NUR ** diegit branch -rd public/master
Lösung im Stil verwenden, um seine Umgebung aufzuräumen.git branch -rd public/master
war was mir fehlte. Ich hatteheroku/master
undherkou/master
... lol woopsAlles was Sie tun müssen, ist
So einfach ist das. Es gibt keinen Grund, hier einen GC anzurufen.
quelle
git branch -rd $(git branch -r)
dann die gültigen Zweige durch einen Abruf wiederherstellen.git config -e
meine Fernbedienung umbenannt hatte. Ich habe die Fernbedienungmine
in umbenanntorigin
. Dann war dies die Lösung, die für mich am besten funktionierte:git branch -rd $(git branch -r | grep 'mine/')
git gc --prune=now
ist nicht was du willst.oder
git remote prune origin
#, wenn dies die Remote-Quelle istist was du willst
quelle
Die akzeptierte Antwort funktionierte bei mir nicht, als der Schiedsrichter gepackt war. Dies tut jedoch:
quelle
In meinem Fall habe ich versucht, Einträge zu löschen, die in gespeichert wurden
.git/packed-refs
. Sie können diese Nur-Text-Datei bearbeiten und Einträge daraus löschengit br -D
die nicht zu berühren wissen (zumindest in Version 1.7.9.5).Ich habe diese Lösung hier gefunden: https://stackoverflow.com/a/11050880/1695680
quelle
git gc
wird. Wenn Ihre Commits in ein stark komprimiertes Archiv gepackt werden, werden die Verweise auch in eine einzelne Nur-Text-Datei verschoben, möglicherweise zu Optimierungszwecken. Ich hoffe, dass zukünftige Versionen von Gitgit br -D ...
Refs verpacken können .Referenziert von: http://www.gitguys.com/topics/adding-and-removing-remote-branches/
quelle
Ich wusste nichts davon. Daher habe
git branch -rd
ich Probleme wie dieses für mich gelöst, indem ich mein Repo als Remote-Repo behandelte und ein Remote-Löschen durchführte.git push . :refs/remotes/public/master
. Wenn die anderen Wege nicht funktionieren und Sie eine seltsame Referenz haben, die Sie loswerden möchten, ist dieser rohe Weg todsicher. Es gibt Ihnen die genaue Genauigkeit, um jede Art von Referenz zu entfernen (oder zu erstellen!).quelle
Nur geringfügig verwandt, aber möglicherweise in der gleichen Situation wie bisher hilfreich - wir verwenden eine Netzwerkdateifreigabe für unser Remote-Repository. Letzte Woche haben die Dinge funktioniert, diese Woche wurde der Fehler "Remote-Ursprung hat Ref nicht für Zweigstellenreferenzen / Köpfe / Master angekündigt. Diese Referenz ist möglicherweise nicht in der Fernbedienung vorhanden oder wird möglicherweise durch Berechtigungseinstellungen ausgeblendet."
Aber wir glaubten, dass nichts getan worden war, um Dinge zu korrumpieren. Das NFS erstellt Snapshots, daher habe ich jede "vorherige Version" überprüft und festgestellt, dass vor drei Tagen die Größe des Repositorys in MB von 282 MB auf 33 MB gestiegen ist und jetzt etwa 1.403 neue Dateien und 300 Ordner vorhanden sind. Ich habe meine Mitarbeiter befragt und einer hatte an diesem Tag versucht, einen Push zu machen - und ihn dann abgesagt.
Ich habe die NFS-Funktion "Wiederherstellen" verwendet, um sie kurz vor diesem Datum wiederherzustellen, und jetzt funktioniert alles wieder einwandfrei. Ich habe die Pflaume vorher probiert, schien nicht zu helfen. Vielleicht hätten die härteren Aufräumarbeiten funktioniert.
Hoffe, das könnte eines Tages jemand anderem helfen!
Jay
quelle
Ich hatte ein ähnliches Problem. Keine der Antworten half. In meinem Fall wurden zwei entfernte Remote-Repositorys permanent angezeigt.
Meine letzte Idee war, alle Verweise von Hand zu entfernen.
Angenommen, das Repository heißt "Repo". Ich tat:
Daher habe ich die entsprechenden Dateien und Verzeichnisse aus dem Ordner .git gelöscht ( dieser Ordner befindet sich in Ihrer Rails-App oder auf Ihrem Computer unter https://stackoverflow.com/a/19538763/6638513) ).
Dann habe ich:
Dabei wurden einige Textdateien gefunden, in denen ich die entsprechenden Zeilen entfernt habe. Jetzt scheint alles in Ordnung zu sein.
Normalerweise sollten Sie diesen Job dem Git überlassen.
quelle