Frage

Aus der Mannseite:

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 verwendet

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 geschaffen, andere von Mitarbeitern. Zeigt dies an, dass ich diese Zweige überhaupt nicht richtig verfolgt habe?

War es hilfreich?

Lösung

Wenn Sie verwenden git push origin :staleStuff, es entfernt automatisch origin/staleStuff, Also, als du rannte git remote prune origin, Sie haben einen Zweig beschnitten, der von jemand anderem entfernt wurde. Es ist wahrscheinlicher, dass Ihre Mitarbeiter jetzt laufen müssen git prune Um Zweige loszuwerden, haben Sie entfernt.


Also was genau git remote prune tut? Hauptidee: Lokale Zweige (nicht verfolgende Zweige) werden von nicht berührt von git remote prune Befehl und sollte manuell entfernt werden.

Nun ein Beispiel für ein besseres Verständnis: ein reales Beispiel: Verständnis:

Sie haben ein Remote -Repository mit 2 Zweigen: master und feature. Nehmen wir an, Sie arbeiten an beiden Zweigen. Dadurch haben Sie diese Referenzen in Ihrem lokalen Repository (vollständige Referenznamen werden gegeben, um Verwirrung zu vermeiden):

  • refs/heads/master (kurzer Name master)
  • refs/heads/feature (kurzer Name feature)
  • refs/remotes/origin/master (kurzer Name origin/master)
  • refs/remotes/origin/feature (kurzer Name origin/feature)

Jetzt ein typisches Szenario:

  1. Einige andere Entwickler beenden alle Arbeiten an der feature, fusioniert es in master und entfernt feature Zweig vom Remote -Repository.
  2. Standardmäßig, wenn Sie dies tun git fetch (oder git pull)) Es werden keine Referenzen aus Ihrem lokalen Repository entfernt, sodass Sie noch alle 4 Referenzen haben.
  3. Sie beschließen, sie aufzuräumen und zu rennen git remote prune origin.
  4. git das erkennen feature Zweig existiert nicht mehr refs/remotes/origin/feature ist ein abgestanden Zweig, der entfernt werden sollte.
  5. Jetzt haben Sie 3 Referenzen, einschließlich refs/heads/feature, Weil git remote prune Entfernt keine refs/heads/* Verweise.

Es ist möglich, lokale Zweige zu identifizieren, die mit Remote -Tracking -Zweigen verbunden sind, von branch.<branch_name>.merge Konfigurationsparameter. Dieser Parameter ist nicht wirklich erforderlich, damit irgendetwas funktioniert (wahrscheinlich außer git pull), also könnte es fehlen.

(Aktualisiert mit Beispiel- und nützlichen Informationen aus Kommentaren)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top