Aktualisieren von Code mit Abrufen, Zusammenführen und Ziehen

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019 | TFS 2018

Visual Studio 2019 | Visual Studio 2022

Wenn es mehrere Mitwirkende zu einem Projekt gibt, halten Sie Ihr lokales Git-Repo aktualisiert, indem Sie Arbeit herunterladen und integrieren, die andere in das Remote-Repo des Projekts hochgeladen haben. Diese Git-Befehle aktualisieren Ihr lokales Repo:

  • Git ruft downloads alle neuen Commits ab, die andere in das Remote-Repo hochgeladen haben. Die Remoteverfolgungszweige im lokalen Repo-Cache werden aktualisiert– lokale Zweigen bleiben unverändert.
  • Git Merge integriert Commits aus einer oder mehreren Quellzweigen in einen Zielzweig.
  • Git rebase integriert Commits aus einem Quellzweig in einen Zielzweig, verwendet jedoch eine andere Strategie als Git-Zusammenführung.
  • Git-Pull führt einen Abruf aus und führt dann eine Zusammenführung oder Rebase aus, um abgerufene Commits in Ihren aktuellen lokalen Zweig zu integrieren.

Visual Studio verwendet eine Teilmenge dieser Git-Befehle, wenn Sie Ihr lokales Repo mit einem Remote-Repo synchronisieren .

Eine Übersicht über den Git-Workflow finden Sie unter Azure Repos Git-Lernprogramm.

In diesem Artikel werden Verfahren für die folgenden Aufgaben bereitgestellt:

  • Herunterladen von Änderungen mit Dem Abrufen
  • Aktualisieren von Zweigen mit Zusammenführung oder Rebase
  • Herunterladen von Änderungen und Aktualisieren von Zweigen mit Pull

Herunterladen von Änderungen mit Dem Abrufen

Git ruft Downloads von Remote branch Commits und referenzierten Dateiobjekten ab, die in Ihrem lokalen Repo nicht vorhanden sind und die Remoteverfolgungszweige im lokalen Repo-Cache aktualisiert. Remoteverfolgungszweige sind lokal zwischengespeicherte schreibgeschützte Kopien von Remotezweigen und sind nicht Ihre lokalen Zweigstellen. Git-Abruf aktualisiert Ihre lokalen Zweigstellen nicht. Wenn beispielsweise ein Remote-Repo, das von origin einem bugfix3 Zweig bestimmt ist, aktualisiert Git-Abruf den Remoteverfolgungszweig namens origin/bugfix3 und nicht Ihre lokale bugfix3 Verzweigung. Sie können Remoteverfolgungszweige verwenden, um:

  • Vergleichen Sie einen Remoteverfolgungszweig mit einem lokalen Zweig, um abgerufene Änderungen zu überprüfen.
  • Zusammenführen eines Remoteverfolgungszweigs in einen lokalen Zweig.
  • Erstellen Sie einen neuen lokalen Zweig aus einem Remoteverfolgungszweig.

Visual Studio 2022 bietet eine Git-Versionssteuerungserfahrung mithilfe des Git-Menüs, Git-Änderungen und über Kontextmenüs in Projektmappen-Explorer. Visual Studio 2019 Version 16.8 bietet auch die Team Explorer Git-Benutzeroberfläche. Weitere Informationen finden Sie auf der Registerkarte Visual Studio 2019 – Team Explorer .

  1. Wählen Sie im Fenster "Git-Änderungen" die Option "Abrufen" aus. Wählen Sie dann ausgehend/eingehende Optionen aus, um das Git-Repository-Fenster zu öffnen.

    Screenshot der Schaltflächen

    Sie können auch im Git-Menü "Abrufen" auswählen.

    Screenshot der Option

  2. Im Git-Repository-Fenster werden abgerufene Commits im Abschnitt "Eingehendes " angezeigt. Wählen Sie einen abgerufenen Commit aus, um die Liste der geänderten Dateien in diesem Commit anzuzeigen. Wählen Sie eine geänderte Datei aus, um eine Diff-Ansicht geänderter Inhalte anzuzeigen.

    Screenshot des Git-Repository-Menüs in Visual Studio 2019.

Tipp

Abrufen löscht keine Remoteverfolgungszweige im lokalen Repo-Cache, die nicht mehr über ein Remoteabsprechen verfügen. So konfigurieren Sie Visual Studio so, dass sie während eines Abrufs stale Remoteverfolgungszweige beschneiden:

  • Wählen Sie "Tools"-Optionen> für das >Quellsteuerelement>Git Global Settings aus.
  • Legen Sie die Prune-Remotezweige während der Abrufoption auf True.

Nach einem Git-Abruf können Sie einen lokalen Zweig mit seinem entsprechenden Remoteverfolgungszweig vergleichen, um zu sehen, was sich auf der Remote branch geändert hat. Wenn Sie sich entscheiden, Ihren aktuellen lokalen Zweig mit abgerufenen Änderungen zu aktualisieren, können Sie einen Git-Seriendruck oder eine Neubasis ausführen. Oder Sie können Git-Pull ausführen, der einen Git-Abruf mit einem Git-Zusammenführen oder Rebase kombiniert. Sowohl git merge als auch Git rebase update a target branch by anwendungs commits from a source branch to it. Git-Zusammenführung und Git-Rebase verwenden jedoch verschiedene Strategien. Weitere Informationen finden Sie unter "Aktualisieren von Zweigen mit Zusammenführung oder Neubasis" und "When to rebase vs. merge".

Aktualisieren von Zweigen mit Zusammenführung oder Rebase

Git merge and Git rebase integration commits from a source branch in your current local branch (target branch). Die Git-Zusammenführung führt entweder einen Schnellvorlauf oder einen no-fast-forward Merge aus. Der Seriendruck ohne Schnelllauf wird auch als Drei-Wege-Zusammenführung oder true-Zusammenführung bezeichnet. Git Rebase ist ein weiterer Zusammenführungstyp. Diese Zusammenführungstypen werden im folgenden Diagramm angezeigt.

Diagramm mit dem Vor- und Nach-Commit beim Verwenden von Zusammenführung und Rebase.

Git-Seriendruck und Git-Rebase werden im Git-Workflow umfassend verwendet. Bei der Arbeit an einem lokalen Feature oder Bugfix-Zweig ist es gängige Vorgehensweise:

  1. Halten Sie Ihre lokale main Verzweigung mit ihrem Remote-Gegenstück aktuell, indem Sie regelmäßig ziehen, um Remote-Commits abzurufen und zusammenzuführen.
  2. Integrieren Sie lokale Verzweigungsupdates in Ihren lokalen main Featurezweig, indem Sie eine Rebase verwenden oder zusammenführen.
  3. Sichern Sie Ihre Arbeit auf dem lokalen Featurezweig, indem Sie sie an die entsprechende Remotezweige pushen .
  4. Erstellen Sie auf Featureabschluss eine Pullanforderung , um Ihre Remotefeature-Branch in den Remotezweig main zusammenzuführen.

Dieser Ansatz hilft Ihnen:

  • Achten Sie auf die aktuelle Arbeit anderer, die sich auf Ihre Arbeit auswirken könnten.
  • Lösen Sie sofort Konflikte zwischen Ihrer Arbeit und dem anderer.
  • Wenden Sie Ihr neues Feature oben auf aktuelle Projektinhalte an.
  • Rufen Sie eine Pull-Anforderungsüberprüfung Ihrer Arbeit ab.

Zusammenführen

Bei Git-Seriendruck ist die Spitze des Zielzweigs innerhalb des Quellzweigs vorhanden, ist der Standarddrucktyp eine schnell weiterleitende Zusammenführung. Andernfalls ist der Standarddrucktyp kein Schnelldruck.

Ein schnell weiterleitender Git-Seriendruck kann niemals einen Zusammenführungskonflikt haben, da Git keinen Schnelldruck anwenden wird, wenn sich die Spitze des Zielzweigs vom Quellzweig abweicht. Standardmäßig verwendet Git eine schnelle Zusammenführung, wenn möglich. Git wendet z. B. einen Schnelldruck auf einem lokalen Zweig an, den Sie nur aktualisieren, indem Sie von seinem Remote-Entsprechungszweig abrufen.

Ein nicht schnell weiterleitender Git-Zusammenführen generiert einen neuen Zielzweig "Merge Commit", der Quellzweigänderungen mit Zielzweigänderungen integriert. Die anwendbaren Änderungen sind diejenigen, die nach dem letzten Commit vorgenommen wurden, der für beide Zweige üblich ist. Im vorherigen Diagramm ist commit C der letzte häufige Commit in beiden Zweigen. Wenn sich alle Quellzweigänderungen mit einer Zielzweigänderung ändern, wird Git aufgefordert, den Zusammenführungskonflikt zu beheben. Der Merge Commit (L) enthält die integrierten Quellzweig- und Zielzweigänderungen. Die Quell- und Zielzweigtipps (K und E) sind die Eltern des Merge-Commits. Im Commitverlauf Ihres Zweigs ist ein Zusammenführungs-Commit ein nützlicher Marker für einen Zusammenführungsvorgang und zeigt klar an, welche Verzweigungen zusammengeführt wurden.

Git Merge ändert nur den Zielzweig– der Quellzweig bleibt unverändert. Wenn Ein oder mehrere Zusammenführungskonflikte auftreten, müssen Sie sie auflösen, um die Zusammenführung abzuschließen. Oder Sie können den Zusammenführungsvorgang abbrechen und den Zielzweig an den vorherigen Zustand zurückgeben.

Weitere Informationen zu Zusammenführungsoptionen und Strategien finden Sie im Git-Referenzhandbuch und in Git-Zusammenführungsstrategien.

Tipp

Wenn der Quellzweig ein Remoteverfolgungszweig ist, stellen Sie sicher, dass branch auf dem neuesten Stand ist, indem Sie einen Git-Abruf vor dem Zusammenführen ausführen.

  1. Wählen Sie "Git > Verwalten von Zweigen " aus der Menüleiste aus, um das Git-Repositoryfenster zu öffnen.

    Screenshot der Option

  2. Klicken Sie im Git-Repositoryfenster mit der rechten Maustaste auf den Zielzweig, und wählen Sie "Auschecken" aus.

    Screenshot der Option

  3. Klicken Sie mit der rechten Maustaste auf den Quellzweig, und wählen Sie "Quellzweig zusammenführen<" in <Zielzweig>> aus.

    Screenshot der Option

  4. Visual Studio zeigt eine Bestätigungsmeldung nach einer erfolgreichen Zusammenführung an.

    Screenshot der Seriendruckbestätigungsnachricht im Git-Repositoryfenster von Visual Studio 2019.

    Wenn die Zusammenführung aufgrund von Zusammenführungskonflikten beendet wird, benachrichtigt Visual Studio Sie. Sie können die Konflikte entweder auflösen oder den Zusammenführungszustand abbrechen und zum Vordruck zurückkehren.

    Screenshot der Seriendruckkonfliktnachricht im Git-Repositoryfenster von Visual Studio 2019.

Rebase

Git rebaset den Commitverlauf des Zielzweigs erneut, sodass es alle Quellzweig-Commits enthält, gefolgt von allen Zielzweig-Commits seit dem letzten gemeinsamen Commit. Eine andere Möglichkeit zum Anzeigen ist, dass eine Git-Basis die Änderungen in Ihrem Zielzweig oben im Quellzweigverlauf erneut wiedergegeben. Wenn sich alle Quellzweigänderungen mit einer Zielzweigänderung ändern, wird Git aufgefordert, den Zusammenführungskonflikt zu beheben. Git-Rebase erstellt keinen Seriendruck-Commit. Insbesondere ändert Git rebase die Sequenz der vorhandenen Zielzweig-Branch-Commits, was nicht der Fall für die anderen Zusammenführungsstrategien ist. Im vorherigen Diagramm enthält commit K' die gleichen Änderungen wie K, hat jedoch eine neue Commit-ID, da er zurück zum Commit E statt C verknüpft.

Git rebase ändert nur den Zielzweig– der Quellzweig bleibt unverändert. Wenn Sie auf einen oder mehrere Zusammenführungskonflikte stoßen, müssen Sie sie auflösen, um die Rebase abzuschließen. Oder Sie können den Rebasevorgang abbrechen und den Zielzweig an den vorherigen Zustand zurückgeben.

Wenn Sie die einzige Person sind, die an Ihrem Feature oder Bugfix-Zweig arbeitet, sollten Sie git rebase verwenden, um neue main Branch-Commits darin zu integrieren. Andernfalls verwenden Sie Git-Seriendruck. Weitere Informationen zur Git-Rebase und zum Verwenden finden Sie unter Anwenden von Änderungen mit Rebase und Rebasevs Merge.

Tipp

Wenn der Quellzweig ein Remoteverfolgungszweig ist, stellen Sie sicher, dass branch auf dem neuesten Stand ist, indem Sie einen Git-Abruf vor der Rebase ausführen.

  1. Wählen Sie Git Manage Branches aus, um das Git-Repositoryfenster> zu öffnen.

    Screenshot der Option

  2. Klicken Sie im Git-Repository-Fenster mit der rechten Maustaste auf den Zielzweig, und wählen Sie "Auschecken" aus.

    Screenshot der Option

  3. Klicken Sie mit der rechten Maustaste auf den Quellzweig, und wählen Sie "Zielverzweigung neu<" auf <"Quellverzweigung>>" aus.

    Screenshot der Option

  4. Visual Studio zeigt nach einer erfolgreichen Neubasis eine Bestätigungsmeldung an.

    Screenshot der Bestätigungsmeldung für die Neubasis im Git-Repositoryfenster von Visual Studio 2019.

    Wenn die Neubasis aufgrund von Zusammenführungskonflikten angehalten wird, benachrichtigt Visual Studio Sie. Sie können die Konflikte entweder auflösen oder die Neubasis abbrechen und zum Vor-Neu-Basiszustand zurückkehren.

    Screenshot der Neubasiskonfliktmeldung im Git-Repositoryfenster von Visual Studio 2019.

Herunterladen von Änderungen und Aktualisieren von Verzweigungen mit Pull

Standardmäßig kombiniert Git-Pull einen Git-Abruf und einen Git-Seriendruck , um Ihre aktuelle lokale Verzweigung von seinem Remote-Gegenstück zu aktualisieren. Optional kann Git-Pull anstelle eines Git-Seriendrucks eine Git-Rebase ausführen.

Im Gegensatz zum Git-Abruf aktualisiert Git-Pull Ihre aktuelle lokale Verzweigung unmittelbar nach dem Herunterladen neuer Commits aus dem Remote-Repo. Verwenden Sie Git-Pull, wenn Sie wissen, dass Sie Ihren aktuellen lokalen Zweig direkt nach einem Git-Abruf aktualisieren möchten.

Tipp

So konfigurieren Sie Visual Studio so, dass sie nicht zusammenführen, wenn Sie ziehen:

  1. Wechseln Sie im Git-Menü zu "Tools>Options>Source Control>Git Global Settings".
  2. Legen Sie beim Ziehen der Option " Lokale Verzweigung rebase" fest True.
  1. Wählen Sie im Fenster "Git-Änderungen " die Option "Pull" aus.

    Screenshot der Schaltfläche

    Sie können auch pull aus dem Git-Menü auswählen.

    Screenshot der Pull-Option im Git-Menü in Visual Studio 2019.

  2. Eine Bestätigungsmeldung wird angezeigt, wenn der Pullvorgang abgeschlossen ist.

    Screenshot der Pull-Bestätigungsmeldung im Git-Änderungsfenster in Visual Studio 2019.

    Wenn während des Zusammenführungsteils des Pullvorgangs Konflikte auftreten, benachrichtigt Visual Studio Sie. Sie können die Konflikte entweder auflösen oder den Zusammenführungsvorgang abbrechen und zum Zustand vor der Zusammenführung zurückkehren.

    Screenshot der Pull-Konfliktmeldung im Git-Änderungsfenster in Visual Studio 2019.

Hinweis

In Visual Studio führt Sync einen Pull aus , um einen lokalen und Remotezweig zu synchronisieren. Weitere Informationen zur Synchronisierung finden Sie unter Verwenden von Git-Abruf, Pull, Push und Synchronisierung für die Versionssteuerung in Visual Studio.

Nächste Schritte