Von der Manpage:
Deletes all stale tracking branches under <name>. These stale branches have already been removed from the remote repository referenced by <name>, but are still locally available in "remotes/<name>".
Also habe ich ein paar Äste mit entfernt
git Push Origin :staleStuff
und rannte dann
git remote Prune Origin
Es wurde jedoch nur eine einzige lokale Niederlassung beschnitten. Einige dieser Zweige wurden von mir erstellt, andere von Mitarbeitern. Bedeutet dies, dass ich diese Zweige überhaupt nicht richtig verfolgt habe?
Wenn Sie git Push Origin :staleStuff
Verwenden, wird Origin/staleStuff
Automatisch entfernt. Wenn Sie also git remote Prune Origin
Ausführen, haben Sie einen Zweig beschnitten, der von einer anderen Person entfernt wurde. Es ist wahrscheinlicher, dass Ihre Mitarbeiter jetzt git Prune
Ausführen müssen, um die von Ihnen entfernten Zweige zu entfernen.
Was genau macht git remote Prune
? Hauptidee: Lokale Zweige (keine Verfolgungszweige) werden vom Befehl git remote Prune
Nicht berührt und sollten manuell entfernt werden.
Nun ein reales Beispiel zum besseren Verständnis:
Sie haben ein Remote-Repository mit 2 Verzweigungen: master
und feature
. Nehmen wir an, Sie arbeiten an beiden Zweigen, sodass Sie diese Referenzen in Ihrem lokalen Repository haben (vollständige Referenznamen werden angegeben, um Verwechslungen zu vermeiden):
refs/heads/master
(Kurzname master
)refs/heads/feature
(Kurzname feature
)refs/remotes/Origin/master
(Kurzname Origin/master
)refs/remotes/Origin/feature
(Kurzname Origin/feature
)Nun ein typisches Szenario:
feature
, führen sie in master
zusammen und entfernen den Zweig feature
aus dem Remote-Repository.git fetch
(Oder git pull
) Ausführen, werden standardmäßig keine Referenzen aus Ihrem lokalen Repository entfernt, sodass Sie immer noch über all diese 4 Referenzen verfügen.git remote Prune Origin
Auszuführen.feature
nicht mehr existiert, also ist refs/remotes/Origin/feature
ein veralteter Zweig, der entfernt werden sollte.refs/heads/feature
, Da git remote Prune
Keine refs/heads/*
- Referenzen entfernt.Über den Konfigurationsparameter branch.<branch_name>.merge
Können lokale Zweige identifiziert werden, die mit Remote-Tracking-Zweigen verknüpft sind. Dieser Parameter ist nicht wirklich erforderlich, damit etwas funktioniert (wahrscheinlich mit Ausnahme von git pull
), Sodass er möglicherweise fehlt.
(aktualisiert mit Beispiel & nützlichen Informationen aus Kommentaren)