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 prunemacht das? Hauptidee: Lokale Zweige (keine Verfolgungszweige) werden nicht vom git remote pruneBefehl berührt und sollten manuell entfernt werden.
Ein Beispiel aus der Praxis zum besseren Verständnis:
Sie haben ein Remote-Repository mit 2 Zweigen: masterund 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 masterdas featureRemote-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
featureZweig nicht mehr existiert, ebenso refs/remotes/origin/featurewie ein veralteter Zweig, der entfernt werden sollte.
- Jetzt haben Sie 3 Referenzen, einschließlich
refs/heads/feature, weil git remote prunekeine refs/heads/*Referenzen entfernt werden.
Es ist möglich, lokale Zweige, die mit Fernverfolgungszweigen verknüpft sind, anhand von branch.<branch_name>.mergeKonfigurationsparametern 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 originnach Zweigen suchen, die markiert sindstale