Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022
Visual Studio 2019 | Visual Studio 2022
Tipp
Sie können KI verwenden, um Azure DevOps-Aufgaben zu unterstützen. Informationen zu den ersten Schritten finden Sie unter Enable AI-Unterstützung bei Azure DevOps MCP Server.
Wenn Sie zusammenführen oder neu basieren, sagen Sie Git, Änderungen, die an einem Branch vorgenommen wurden, mit Änderungen zu integrieren, die an einem anderen Branch vorgenommen wurden. Häufig führt Git eine Zusammenführung oder einen Rebase automatisch ohne Ihre Unterstützung durch. Wenn Git jedoch feststellt, dass eine Änderung an einer Verzweigung mit einer Änderung, die an einer anderen vorgenommen wurde, in Konflikt steht, werden Sie aufgefordert, den Konflikt zu lösen. Ein Zusammenführungskonflikt kann auftreten, wenn die zusammengeführten Verzweigungen dieselbe Dateizeile anders bearbeiten oder wenn eine Verzweigung eine Datei ändert und eine andere Verzweigung sie löscht. Der Prozess zum Auflösen von Zusammenführungskonflikten gilt sowohl für die Git-Zusammenführung als auch für die Neubasis.
Sie können Zusammenführungskonflikte in Visual Studio oder mithilfe der Befehlszeile und eines beliebigen Text-Editors beheben.
Eine Übersicht über den Git-Workflow finden Sie im Lernprogramm zu Azure Repos Git.
Voraussetzungen
| Kategorie | Anforderungen |
|---|---|
| Projektzugriff | Mitglied eines Projekts. |
| Erlaubnisse | - Code in privaten Projekten anzeigen: Mindestens einfacher Zugriff. - Klonen oder Mitwirken an Code in privaten Projekten: Mitglied der Sicherheitsgruppe "Mitwirkende" oder entsprechende Berechtigungen im Projekt. – Legen Sie Branch- oder Repositoryberechtigungen fest: Berechtigungen verwalten für den Branch oder das Repository. - Branchrichtlinien und Statusprüfungen festlegen oder den Standardbranch ändern: erforderlich sind die Berechtigung „Richtlinien bearbeiten“ für das Repository oder den Branch oder die Mitgliedschaft in der Sicherheitsgruppe „Projektadministratoren“. - Ein Repository importieren: Mitglied der Sicherheitsgruppe Projektadministratoren oder die Berechtigung Repository erstellen auf Git-Projektebene auf Zulassen festgelegt. Weitere Informationen finden Sie unter Festlegen von Git-Repositoryberechtigungen. |
| Dienste | Repos aktiviert. |
| Werkzeuge | Wahlfrei. Verwenden Sie az repos Befehle: Azure DevOps CLI. |
| Kategorie | Anforderungen |
|---|---|
| Projektzugriff | Mitglied eines Projekts. |
| Erlaubnisse | - Code anzeigen: Mindestens einfacher Zugriff. - Code klonen oder dazu beitragen: Mitglied der Sicherheitsgruppe Contributors oder entsprechende Berechtigungen im Projekt. |
| Dienste | Repos aktiviert. |
Verständnis von Zusammenführungskonflikten
Git Merge oder Git Rebase integriert Commits aus einem Quellbranch in Ihren aktuellen lokalen Branch (Zielbranch). Git merge führt entweder eine fast-forward oder eine no-fast-forward Zusammenführung aus. Der No-Fast-Forward-Mergevorgang wird auch als Drei-Weg-Merge oder echter Mergevorgang bezeichnet. Git rebase ist eine andere Art von Verschmelzung. Diese Zusammenführungstypen werden im folgenden Diagramm dargestellt.
Wenn bei Git Merge die Spitze des Zielbranchs im Quellbranch enthalten ist, wird standardmäßig ein Fast-Forward Mergevorgang ausgeführt. Andernfalls wird standardmäßig ein No-Fast-Forward-Mergevorgang ausgeführt.
Eine Schnellweiterleitungszusammenführung kann niemals einen Zusammenführungskonflikt aufweisen, da Git keine Schnellweiterleitungszusammenführung anwendet, wenn sich der Tipp der Zielverzweigung von der Quellverzweigung unterscheidet. Standardmäßig verwendet Git einen schnellen Zusammenführungsvorgang, wenn möglich. Git wendet z. B. ein Fast-Forward-Merge auf einen lokalen Branch an, den Sie lediglich durch Pullen aus seinem entsprechenden Remotebranch aktualisieren.
Bei einem No-Fast-Forward-Merge wird ein neuer „Mergecommit“ des Zielbranchs generiert, der Änderungen im Quellbranch in Änderungen des Zielbranchs integriert. Die anwendbaren Änderungen sind die Änderungen, die nach dem letzten, für beide Branches gemeinsamen Commit vorgenommen wurden. Im vorherigen Diagramm ist Commit C der letzte gemeinsame Commit in beiden Verzweigungen. Wenn eine Änderung des Quellzweigs mit einer Änderung der Zielzweigung in Konflikt steht, werden Sie von Git aufgefordert, den Zusammenführungskonflikt zu beheben. Der Mergecommit (L) enthält die integrierten Quellbranch- und Zielbranchänderungen. Die Quell- und Zielbranchspitzen (K und E) sind die übergeordneten Elemente des Mergecommits. Im Commitverlauf Ihres Branchs ist ein Mergecommit ein nützlicher Marker für einen Mergevorgang, der deutlich zeigt, welche Branches zusammengeführt wurden.
Git rebase sequenziert die Commit-Historie des Ziel-Branches neu, sodass sie alle Commits des Quell-Branches enthält, gefolgt von allen Ziel-Branch-Commits seit dem letzten gemeinsamen Commit. Im vorherigen Diagramm ist Commit C der letzte gemeinsame Commit in beiden Verzweigungen. Eine weitere Möglichkeit dafür besteht darin, dass ein Rebasevorgang die Änderungen in Ihrem Zielbranch über dem Quellbranchverlauf wiederholt. Wenn eine Änderung des Quellzweigs mit einer Änderung der Zielzweigung in Konflikt steht, werden Sie von Git aufgefordert, den Zusammenführungskonflikt zu beheben. Wie beim Fast-Forward-Merge wird beim Rebase kein Mergecommit erstellt. Insbesondere ändert eine Rebasevorgang die Reihenfolge der vorhandenen Commits im Zielbranch, was bei den anderen Mergestrategien nicht der Fall ist. Im vorherigen Diagramm enthält commit K' die gleichen Änderungen wie K, verfügt aber über eine neue Commit-ID, da sie mit dem Commit E anstelle von C verknüpft wird.
Git merge und rebase verändern nur den Zielzweig – der Quellzweig bleibt unverändert. Wenn dabei ein Mergekonflikt auftritt, müssen Sie diesen auflösen, um den Merge- oder Rebasevorgang durchzuführen. Alternativ können Sie den Merge-/Rebasevorgang abbrechen und den Zielbranch in den vorherigen Zustand zurücksetzen.
Weitere Informationen zu Zusammenführungsoptionen und -strategien finden Sie im Git-Referenzhandbuch und den Git-Zusammenführungsstrategien.
Wann sollten Zusammenführungskonflikte gelöst werden?
Git merge und Git rebase werden häufig im Git-Workflow verwendet. Bei der Arbeit an einem lokalen Feature oder bugfix Branch ist es üblich, Folgendes zu beachten:
- Halten Sie Ihren lokalen
main-Branch mit dem seinem entsprechenden Remoterepository auf dem aktuellen Stand, indem Sie regelmäßig pullen, um Remotecommits abzurufen und zusammenzuführen. - Integrieren Sie lokale
main-Branchaktualisierungen mit einem Rebase oder Merge in Ihren lokalen Featurebranch. - Sichern Sie Ihre Arbeit im lokalen Featurebranch, indem Sie sie an den entsprechenden Remotebranch pushen.
- Erstellen Sie nach Fertigstellung des Features einen Pull Request, um den Remotefeaturebranch mit dem
main-Remotebranch zusammenzuführen.
Indem Sie Remoteänderungen häufig in Ihr lokales Repository integrieren, können Sie über die jüngsten Arbeiten von anderen Personen auf dem Laufenden bleiben und auftretende Merge-Konflikte umgehend lösen.
Merge-Konflikte beheben
Der Prozess zum Auflösen von Zusammenführungskonflikten gilt sowohl für git merge als auch für git rebase. Obwohl die folgenden Schritte beschreiben, wie Zusammenführungskonflikte während einer Zusammenführung behoben werden, können Sie zusammenführungskonflikte während einer Neubasis auf ähnliche Weise lösen.
Tipp
Wenn es sich bei der Quellverzweigung um eine Remote-Tracking-Verzweigung handelt, stellen Sie sicher, dass die Verzweigung auf dem neuesten Stand ist, indem Sie vor einer Zusammenführung ein Git-Fetch ausführen. Oder führen Sie den Git pull-Befehl aus, der ein Git fetch mit einem Git merge kombiniert.
- Visual Studio 2022
- Visual Studio 2019 – Git-Menü
- Visual Studio 2019 – Team Explorer
- Git-Befehlszeile
Visual Studio 2022 bietet eine Git-Versionskontrolle mithilfe des Git-Menüs , Git-Änderungen und über Kontextmenüs im Projektmappen-Explorer. Visual Studio 2019, Version 16.8, bietet auch die Git-Benutzeroberfläche des Team Explorers . Weitere Informationen finden Sie auf der Registerkarte "Visual Studio 2019 – Team Explorer ".
Überprüfen Sie im Bereich "Verzweigungen " des Git-Repository-Fensters den Zielzweig. Klicken Sie dann mit der rechten Maustaste auf den Quellzweig und wählen Sie "Quellzweig< in >Zielzweig< zusammenführen>."
Visual Studio benachrichtigt Sie, wenn Git die Zusammenführung aufgrund von Konflikten angehalten hat. In diesem Fall können Sie entweder die Konflikte lösen oder die Zusammenführung abbrechen und zum Zustand vor der Zusammenführung zurückkehren. Im Abschnitt "Nicht zusammengeführte Änderungen " des Git Changes-Fensters werden die Dateien mit Zusammenführungskonflikten aufgelistet. Doppelklicken Sie bei einer Datei mit Zusammenführungskonflikten in ihrem Inhalt auf die Datei, um sie im Zusammenführungs-Editor zu öffnen.
Im Zusammenführungs-Editor wird der Bereich Eingehend die Version der Quellzweigdatei angezeigt, der Bereich Aktuell zeigt die Zielzweigdateiversion an, und im Ergebnis wird die resultierende Zusammenführungsdatei angezeigt. Wenn Sie bestimmte Quell- oder Zielzweigänderungen anwenden möchten, aktivieren Sie das Kontrollkästchen neben den konfliktierenden Zeilen, die Sie beibehalten möchten. Sie können direkt die Merge-Datei im Ergebnisbereich bearbeiten. Wählen Sie "Zusammenführen annehmen" , nachdem Sie alle Zusammenführungskonflikte in der aktuellen Datei behoben haben. Wiederholen Sie diesen Schritt für jede Datei mit Inhaltskonflikten.
Klicken Sie für eine Datei, die in einer Verzweigung bearbeitet und in der anderen gelöscht wurde, mit der rechten Maustaste auf die Datei, und wählen Sie die gewünschte Verzweigungsaktion aus.
Geben Sie im Fenster „Git-Änderungen“ eine Commitnachricht ein, und wählen Sie Gestaffelt committen aus, um den Mergevorgang durchzuführen, nachdem Sie alle Mergekonflikte für alle Dateien behoben haben.