Dieses Problem ist (noch) nicht gelöst, zumindest nicht einfach / ohne Skripterstellung: In diesem Beitrag auf der Git-Mailingliste von Junio C Hamano wird die Situation erläutert und eine einfache Lösung gefordert.
Der Hauptgrund ist, dass Sie dies nicht brauchen sollten:
Mit Git, das nicht alt ist (dh v1.5.0 oder neuer), gibt es keinen Grund mehr, einen lokalen "Entwickler" zu haben, der nur noch die Fernbedienung verfolgt. Wenn Sie nur nachsehen möchten, können Sie den Zweig für die Fernverfolgung direkt auf einem abgetrennten HEAD mit " git checkout origin/dev
" überprüfen .
Dies bedeutet, dass die einzigen Fälle, die wir für Benutzer bequemer machen müssen, darin bestehen, diese lokalen Zweige zu bearbeiten, die entfernte Zweige "verfolgen", wenn Sie lokale Änderungen haben oder wenn Sie planen, einige zu haben.
Wenn Sie lokale Änderungen an "dev" haben, die markiert sind, um das Entfernen von "dev" zu verfolgen, und wenn Sie sich in einem Zweig befinden, der sich von "dev" unterscheidet, sollten wir nichts tun, nachdem " git fetch
" das Remote-Tracking "dev" aktualisiert hat. . Es wird sowieso nicht schnell vorspulen
Die Forderung nach einer Lösung bestand darin, eine Option oder ein externes Skript zu verwenden, um lokale Zweige, die jetzt auf Fernverfolgungszweige folgen, zu beschneiden , anstatt sie durch Schnellvorlauf auf dem neuesten Stand zu halten, wie es das Originalplakat verlangt.
Wie wäre es also mit " git branch --prune --remote=<upstream>
", das über lokale Zweige iteriert, und wenn
(1) es ist nicht der aktuelle Zweig; und
(2) es ist markiert, um einen Zweig zu verfolgen, der aus dem <upstream> entnommen wurde; und
(3) es hat keine eigenen Verpflichtungen;
dann diesen Zweig entfernen? " git remote --prune-local-forks <upstream>
" ist auch gut; Es ist mir egal, welcher Befehl die Funktion so stark implementiert.
Hinweis: Ab Git 2.10 gibt es keine solche Lösung. Beachten Sie, dass dergit remote prune
Unterbefehl und dasgit fetch --prune
Entfernen des Remote-Tracking-Zweigs für einen Zweig, der nicht mehr auf dem Remote vorhanden ist, und nicht das Entfernen des lokalen Zweigs, der den Remote-Tracking-Zweig verfolgt (für den der Remote-Tracking-Zweig der Upstream-Zweig ist).