git remote prune origin nicht löschen Sie die lokale Filiale, auch wenn seine upstream remote branch wird gelöscht
Dies ist ein häufiger Anwendungsfall für mich, ich clone a repository checkout eine Filiale, tun einige änderungen am code, mehrere verpflichtet, dann, wenn seine stabile, mache ich push-to-remote-schließlich wird der Zweig bekommt zusammengeführt und gelöscht werden. und ich bin Links mit einer lokalen Niederlassung mit vor-gegangen.
War ich auf der Suche nach einem sicheren Weg, der das löschen aller solcher Zweige. von der Beschreibung schien es wie git remote prune origin tut genau dies. Aber es scheint nicht zu funktionieren für mich.
Sehen die folgenden Verhaltensweisen, die Niederlassung encrdb_init
gelöscht worden remote
aber die git remote prune origin
Befehl scheint nicht zu beschneiden es. Ich bin nicht sicher, warum.
$ git branch
bugfix/encrdb_init
* master
$
$ git remote prune origin
$
$ git checkout bugfix/encrdb_init
Switched to branch 'bugfix/encrdb_init'
Your branch is based on 'origin/bugfix/encrdb_init', but the upstream
is gone.
(use "git branch --unset-upstream" to fixup)
$
$ git branch
bugfix/encrdb_init <<< shouldn't this have been pruned?
* master
Referenz hinzufügen Ausgabe von git remote show origin
$ git remote show origin
* remote origin
Fetch URL: <redacted>
Push URL: <redacted>
HEAD branch: master
Remote branches:
SSL_test tracked
addNodeFix tracked
autoprefix tracked
release/1.0.2 tracked
Local branches configured for 'git pull':
bugfix/encrdb_init merges with remote bugfix/encrdb_init
master merges with remote master
release/1.0.2 merges with remote release/1.0.2
Local refs configured for 'git push':
master pushes to master (up to
date)
release/1.0.2 pushes to release/1.0.2 (up to
date)
$ git branch -vv
* bugfix/encrdb_init 341a078c [origin/bugfix/encrdb_init: gone] <redacted comment>`
- Versuchen
git remote prune origin --dry-run
zu überprüfen, die veraltete Filialen git remote prune origin --dry-run
Ausgabe leer- es gibt leere, weil es keine mehr remote-tracking-branch zu löschen. Und
bugfix/encrdb_init
ist eine lokale (Sie können einen Schrägstrich in einem branch-name) - Sie erhalten eine Liste der
your stale remote-tracking branches
mit dem oben genannten Befehl. Wenn Sie nicht erhalten, es, etwas anderes ist wohl falsch - Möglich, Duplikat der Was sind die Unterschiede zwischen git remote prune, git prune, git fetch --prune, usw
- Vielen Dank, es sieht aus wie der Befehl löscht nur die Filialen in
remote
aber nicht löschen Sie die lokale Filiale, die jetzt hängen gelassen. Es sieht aus wie der Befehl löscht nicht die lokalen Niederlassungen, auch diejenigen, die flussaufwärts gegangen. - ja, das ist der ganze Punkt von
git remote
: update oder löschen in derremotes
namespace. Nicht zu manipulieren, mit lokalen Niederlassungen. - Ich aktualisiert meine Antwort mit der tatsächlichen Befehle, löscht die Zweige, die Sie wollen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
git remote prune
Befehl löscht nur die remote-tracking branches in derremotes/origin
namespace.Nicht die lokalen Niederlassungen.
Die übliche Praxis ist, um löschen Sie nur merged Filialen.
git-Zweig (auch mit "- vv") zeigt nur lokalen Niederlassungen.
Ein Zweig kann einen slash im Namen
Einen remote-tracking-branch ist in der
remotes/origin
namespace, und notieren Sie, was war, zu Holen.Ein upstream-Zweig ist ein remote-branch verbunden, um eine lokale Niederlassung, um für die lokale Niederlassung, um zu wissen wo zu schieben.
git remote prune richtig entfernen Sie die remote-tracking-branch,, die passiert werden die upstream-branch für den lokalen
bugfix/encrdb_init
Zweig.Das ist, warum Sie sehen
origin/bugfix/encrdb_init: gone
: die remote-tracking-branch ist Weg.Die OP fügt hinzu:
Nein, die Beschreibung nicht erwähnt, lokalen Niederlassungen.
<name>
hier ist der name des remote repo verwiesen wird, die von git remote -V).In der Regel "
origin
".git remote prune
löschen Zweige registriert inremotes/origin
(nicht die "remote(s)"). Es wird nicht löschen Sie lokale Niederlassungen.Um "sicher" zu löschen Filialen, man soll:
entweder als diejenigen, zusammengeführt, lokal, zum Beispiel zusammengeführt, um
master
:oder, wenn Sie wirklich wollen, um sofort löschen, dessen upstream-branch ist "verschwunden":
Dass Letzte option unzuverlässig ist:
: gone
"Einen besseren Weg, um die Liste jener Filialen:
git remote prune origin
sollte löschen Sie veraltete Zweige von den lokalen, Ihre Antwort hat keine Antwort auf die Fragebugfix/encrdb_init
wurde zusammengeführt zu meistern und gelöscht remote, aber git nicht löschen.git remote show origin