Wie aktualisiere ich Zweige (lokal / remote) in Visual Studio, wenn ich Git verwende?

73

Zusammenfassung

Ich lerne, wie man Git mit Visual Studio benutzt. Ich habe kürzlich eine Pull-Anfrage gestellt, bei der der Feature-Zweig nach dem Zusammenführen gelöscht wurde. Der Feature-Zweig wird weiterhin in meinen lokalen und Remote-Zweigen in Visual Studio angezeigt. Ich weiß, wie man mit der rechten Maustaste auf den Zweig klickt und ihn löscht. Dies ist eine Problemumgehung, da andere im Team möglicherweise eine Pull-Anforderung für einen Zweig ausführen, den ich habe, ohne dass ich es weiß. Wenn sie den Zweig danach löschen, würde ich nicht wissen, dass sie dies getan haben.

Frage

Wie aktualisiere ich Visual Studio-Zweige mit dem, was auf Git ist?

Was ich erwarte

Ich würde eine Schaltfläche, einen Link oder eine Rechtsklick-Funktion erwarten, die beim Klicken auf Unterschiede prüft. Wenn welche gefunden werden, wird gefragt: "Dieser Zweig existiert nicht mehr. Möchten Sie ihn aus Visual Studio entfernen?".

Technische Daten

Ich verwende Visual Studio 2015 Enterprise (scheint immer noch ein Symptom für VS 2019 zu sein).

Zusätzliches Beispiel

Dies könnte eine andere Frage sein, aber sie passt hier so gut. Ich habe gerade festgestellt, dass Visual Studio beim Erstellen eines Zweigs (z. B. in einer VM und Betrachten des gleichen Repos mit einem anderen) keine git fetchOption zum Aktualisieren der Verzweigungsliste hat. Die Aktualisierungsschaltfläche oben scheint nichts zu bewirken. Sobald ich git fetchin einer Bash laufe , hat Visual Studio die neue Niederlassung. Ich würde erwarten, dass die Aktualisierung sich darum kümmert.

JabberwockyDecompiler
quelle

Antworten:

90

Wenn der Zweig auf der Serverseite gelöscht wurde, versuchen Sie es in der Befehlszeile (da eine solche "Schaltfläche" nicht direkt in Visual Studio zu existieren scheint):

git remote prune origin --dry-run

(Entfernen Sie die --dry-runOption, um die lokalen Zweige tatsächlich zu löschen.)

Löschen Sie auch den entsprechenden lokalen Zweig git branch -d aBranch.

Dann Starten Sie Ihr Visual Studio neuund überprüfen Sie, ob die aktualisierte Verzweigungsliste abgerufen wird. (Kommentare erwähnen, dass Sie VS nicht neu starten / aktualisieren müssen)

Hinweis: Ich habe bereits 2013 die Konfiguration erwähnt

git config remote.origin.prune true

Das würde diesen Prozess automatisieren und scheint von Visual Studio unterstützt zu werden , wie unten von yaniv erwähnt .

VonC
quelle
5
Es sollte kein Neustart erforderlich sein - VS sollte die Änderungen, die Sie an Ihren Refs vorgenommen haben, erkennen und neu laden.
Edward Thomson
2
Dadurch wird der Remote-Zweig aktualisiert, und die Ergebnisse werden in Visual Studio angezeigt. Damit ich Ihnen das Kopfgeld geben kann, möchte ich wissen, ob sich in VS eine Schaltfläche befindet, die den pruneBefehl git ausführt .
JabberwockyDecompiler
Ich kann bestätigen, dass kein Neustart erforderlich ist. Seltsam, dass die Schaltfläche "Aktualisieren" den Zweig selbst nicht beschneidet.
David De Sloovere
@MamunReza OK. Ich habe die Antwort entsprechend bearbeitet.
VonC
1
@markthegrea ja, in einer Kommandozeile, in Ihrem lokalen Repo: visualstudio.com/en-us/docs/git/command-prompt
VonC
44

Von: https://intovsts.net/2017/01/17/refresh-git-remote-branches-in-visual-studio/

Mit diesem Befehl können Sie git so konfigurieren, dass dies beim Abrufen / Ziehen automatisch ausgeführt wird:

git config remote.origin.prune true –global

Aktualisieren:

Visual Studio 2017 Version 15.7.3 und höher können Sie über die Benutzeroberfläche ausführen:

  1. Klicken Sie im Team Explorer auf Start und dann auf Einstellung: Geben Sie hier die Bildbeschreibung ein

  2. Wählen Sie Globale Einstellungen

  3. Ändern Sie "Remote-Zweige beim Abrufen beschneiden" in "True".
Yaniv
quelle
3
Interessant. +1 Ich habe die Konfiguration für mehr Sichtbarkeit in meine Antwort oben aufgenommen.
VonC
33

Laut diesem Blog-Beitrag können Sie eine Git-Eigenschaft über festlegen

git config remote.origin.prune true

Dadurch werden gelöschte Zweige aus Ihrer Liste entfernt, wenn Sie einen Abruf durchführen.

Thaoden
quelle
3
Ich finde es toll, dass das so lange funktioniert, wie mein Repo da ist!
Madannes
2
Beeindruckend. Vielen Dank! Ich werde dies mit meinen Kollegen teilen.
Pangamma
2
Viel bessere Lösung, da es einmal ist.
BBlake
11

VS 2017 scheint Unterstützung im Team Explorer konfigurierbar zu haben:

Team Explorer Home-Einstellungen Git> Globale Einstellungen Remote-Zweige beim Abrufen beschneiden: Nicht gesetzt, Richtig oder Falsch

Mark Arnold
quelle
0

Sie sollten den Zweig zuerst freigeben , dann werden andere bemerken, dass der Zweig nicht veröffentlicht ist (wenn Sie versuchen, den Zweig zu ziehen, wird ein Fehler angezeigt). Das Löschen des lokalen Zweigs ist eigentlich ein separater Prozess und muss durchgeführt werden, um ihn zu entfernen die Niederlassung sowieso.

lkn2993
quelle
Bei GitHub Pull Requests kann der Zweig von der GitHub Site gelöscht werden. Es gibt keine Option, die Veröffentlichung dieses Prozesses aufzuheben. Sie haben die Möglichkeit, den Zweig an diesem Punkt zu löschen oder den Zweig mit einem Symbolklick zu löschen. Ich sehe auch keine Veröffentlichung in Visual Studio. Ich aktualisiere die Frage, um die Version von VS aufzunehmen, die ich verwende, da mir klar wurde, dass ich das nicht aufgenommen habe.
JabberwockyDecompiler