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
War es hilfreich?

Lösung

Sie könnte eine Bereinigung

mehr brauchen
git gc --prune=now

oder Sie können eine Pflaume

mehr brauchen
git 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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top