Wenn Sie verwenden git push origin :staleStuff
, wird es automatisch entfernt origin/staleStuff
. Wenn Sie also ausgeführt haben git remote prune origin
, haben Sie einen Zweig beschnitten, der von einer anderen Person entfernt wurde. Es ist wahrscheinlicher, dass Ihre Mitarbeiter jetzt rennen müssen git prune
, um entfernte Zweige loszuwerden.
Was genau git remote prune
macht das? Hauptidee: Lokale Zweige (keine Verfolgungszweige) werden nicht vom git remote prune
Befehl berührt und sollten manuell entfernt werden.
Ein Beispiel aus der Praxis zum besseren Verständnis:
Sie haben ein Remote-Repository mit 2 Zweigen: 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:
- Einige andere Entwickler beenden alle Arbeiten an dem
feature
, führen es in master
das feature
Remote-Repository ein und entfernen es .
- Wenn Sie dies tun
git fetch
(oder git pull
), werden standardmäßig keine Referenzen aus Ihrem lokalen Repository entfernt, sodass Sie immer noch über alle 4 Referenzen verfügen.
- Sie beschließen, sie aufzuräumen und zu rennen
git remote prune origin
.
- git erkennt, dass der
feature
Zweig nicht mehr existiert, ebenso refs/remotes/origin/feature
wie ein veralteter Zweig, der entfernt werden sollte.
- Jetzt haben Sie 3 Referenzen, einschließlich
refs/heads/feature
, weil git remote prune
keine refs/heads/*
Referenzen entfernt werden.
Es ist möglich, lokale Zweige, die mit Fernverfolgungszweigen verknüpft sind, anhand von branch.<branch_name>.merge
Konfigurationsparametern zu identifizieren . Dieser Parameter ist nicht wirklich erforderlich, damit etwas funktioniert (wahrscheinlich außer git pull
), daher fehlt er möglicherweise.
(aktualisiert mit Beispiel & nützlichen Informationen aus Kommentaren)
git remote show origin
nach Zweigen suchen, die markiert sindstale