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 Zweige mit entfernt
git push origin :staleStuff
und rannte dann
git remote prune origin
Es wurde jedoch nur ein einziger lokaler Zweig beschnitten. Einige dieser Zweige wurden von mir gegründet, andere von Mitarbeitern. Bedeutet dies, dass ich diese Zweige überhaupt nicht richtig verfolgt habe?
git
version-control
branch
git-branch
git-remote
Felixyz
quelle
quelle
git remote show origin
nach Zweigen suchen, die markiert sindstale
Antworten:
Wenn Sie verwenden
git push origin :staleStuff
, wird es automatisch entferntorigin/staleStuff
. Wenn Sie also ausgeführt habengit remote prune origin
, haben Sie einen Zweig beschnitten, der von einer anderen Person entfernt wurde. Es ist wahrscheinlicher, dass Ihre Mitarbeiter jetzt rennen müssengit prune
, um entfernte Zweige loszuwerden.Was genau
git remote prune
macht das? Hauptidee: Lokale Zweige (keine Verfolgungszweige) werden nicht vomgit 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
undfeature
. 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
(Kurznamemaster
)refs/heads/feature
(Kurznamefeature
)refs/remotes/origin/master
(Kurznameorigin/master
)refs/remotes/origin/feature
(Kurznameorigin/feature
)Nun ein typisches Szenario:
feature
, führen es inmaster
dasfeature
Remote-Repository ein und entfernen es .git fetch
(odergit pull
), werden standardmäßig keine Referenzen aus Ihrem lokalen Repository entfernt, sodass Sie immer noch über alle 4 Referenzen verfügen.git remote prune origin
.feature
Zweig nicht mehr existiert, ebensorefs/remotes/origin/feature
wie ein veralteter Zweig, der entfernt werden sollte.refs/heads/feature
, weilgit remote prune
keinerefs/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ßergit pull
), daher fehlt er möglicherweise.(aktualisiert mit Beispiel & nützlichen Informationen aus Kommentaren)
quelle
git prune
. Nur Zweige in/refs/remotes/<remote_name>/
werden beschnitten. Zweige in/refs/heads/
werden nicht berührt - Sie müssen diese manuell verwalten.branch.<branch_name>.merge
Konfigurationsparametern identifiziert werden.