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
Wenn Sie zusammenführen oder neu basieren, werden Sie Git mitteilen, änderungen, die an einer Verzweigung vorgenommen wurden, mit Änderungen zu integrieren, die an einem anderen vorgenommen wurden. Häufig schließt Git einen Seriendruck ab oder basiert automatisch ohne Ihre Unterstützung. 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 Verzweigungs- oder Repositoryberechtigungen fest: Berechtigungen für die Verzweigung oder das Repository verwalten . - Standardverzweigung ändern: Bearbeiten von Richtlinienberechtigungen für das Repository. - Importieren eines Repositorys: Mitglied der Sicherheitsgruppe "Projektadministratoren " oder "Git-Projektebene Repository erstellen"-Berechtigungssatz auf "Zulassen". Weitere Informationen finden Sie unter Festlegen von Git-Repositoryberechtigungen. |
| Dienste | Repos aktiviert. |
| Werkzeuge | Wahlfrei. Verwenden Sie az repos-Befehle : Azure DevOps CLI. |
Hinweis
In öffentlichen Projekten haben Benutzer mit Stakeholder-Zugriff vollzugriff auf Azure Repos, einschließlich Anzeigen, Klonen und Beitragen zu Code.
| Kategorie | Anforderungen |
|---|---|
| Projektzugriff | Mitglied eines Projekts. |
| Erlaubnisse | - Code anzeigen: Mindestens einfacher Zugriff. - Klonen oder Zum Code beitragen: Mitglied der Sicherheitsgruppe "Mitwirkende " oder entsprechende Berechtigungen im Projekt. |
| Dienste | Repos aktiviert. |
Grundlegendes zu Zusammenführungskonflikten
Git merge or rebase integrations commits from a source branch into your current local branch (Target Branch). Die Git-Zusammenführung führt entweder eine Schnell- oder eine Schnell-Vorwärts-Zusammenführung aus. Der Seriendruck ohne Schnelleinführung wird auch als "Drei-Wege-Zusammenführung " oder "True Merge" bezeichnet. Git-Neubasis ist eine andere Art von Zusammenführung. Diese Zusammenführungstypen werden im folgenden Diagramm dargestellt.
Wenn bei Git Merge der Tipp der Zielverzweigung innerhalb der Quellverzweigung vorhanden ist, handelt es sich bei dem Standarddrucktyp um einen schnellen Seriendruck. Andernfalls ist der Standarddrucktyp ein Seriendruck ohne Schnelleinführung.
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. einen Schnellweiterleitungszusammenführung auf eine lokale Verzweigung an, die Sie nur aktualisieren, indem Sie von der Remote-Entsprechungsverzweigung aus ziehen.
Bei einem Seriendruck ohne Schnelleinführung wird ein neuer Zielverzweigungs-Commit "Merge Commit" generiert, der Die Änderungen der Quellverzweigung in Zielverzweigungsänderungen integriert. Die anwendbaren Änderungen sind diejenigen, die nach dem letzten Commit vorgenommen wurden, der für beide Verzweigungen gilt. 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 Zusammenführungs-Commit (L) enthält die Änderungen an der integrierten Quell-Verzweigung und Ziel-Verzweigung. Die Quell- und Zielzweigtipps (K und E) sind die übergeordneten Elemente des Zusammenführungs-Commits. Im Commitverlauf Ihrer Verzweigung ist ein Zusammenführungs-Commit ein nützlicher Marker für einen Zusammenführungsvorgang und zeigt eindeutig an, welche Verzweigungen zusammengeführt wurden.
Git rebase resequences the commit history of the target branch so that it contains all source branch commits, followed by all target branch commits since the last common commits. Im vorherigen Diagramm ist Commit C der letzte gemeinsame Commit in beiden Verzweigungen. Eine weitere Möglichkeit zum Anzeigen ist, dass eine Basis die Änderungen in Ihrer Zielverzweigung über dem Quellverzweigungsverlauf wiedergibt. Wenn eine Änderung des Quellzweigs mit einer Änderung der Zielzweigung in Konflikt steht, werden Sie von Git aufgefordert, den Zusammenführungskonflikt zu beheben. Wie bei der Schnellweiterleitung erstellt eine Basis keinen Zusammenführungs-Commit. Insbesondere ändert eine Neubasis die Reihenfolge der vorhandenen Zielverzweigungs-Commits, was nicht für die anderen Zusammenführungsstrategien 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 and rebase only modify the target branch – the source branch remains unchanged. Wenn sie auf einen oder mehrere Zusammenführungskonflikte stoßen, müssen Sie sie auflösen, um die Zusammenführung abzuschließen oder die Basis neu zu erstellen. Alternativ können Sie den Zusammenführungs-/Neubasisvorgang abbrechen und die Zielverzweigung an den vorherigen Zustand zurückgeben.
Weitere Informationen zu Zusammenführungsoptionen und -strategien finden Sie im Git-Referenzhandbuch und den Git-Zusammenführungsstrategien.
Gründe für die Lösung von Zusammenführungskonflikten
Git merge and Git rebase are extensive used in the Git workflow. Bei der Arbeit an einem lokalen Feature oder bugfix Branch ist es üblich, Folgendes zu beachten:
- Halten Sie Ihre lokale
mainVerzweigung mit ihrem Remoteentsprechung aktuell, indem Sie regelmäßig Ziehen , um Remote-Commits abzurufen und zusammenzuführen. -
mainIntegrieren Sie lokale Verzweigungsupdates in Ihre lokale Featureverzweigung mithilfe einer Neubasis oder Zusammenführung. - Sichern Sie Ihre Arbeit an der lokalen Feature-Verzweigung, indem Sie sie an die entsprechende Remote-Verzweigung übertragen .
- Erstellen Sie nach Abschluss des Features eine Pullanforderung , um Ihren Remotefeature-Branch in der Remote-Verzweigung
mainzusammenzuführen.
Indem Sie Remoteänderungen häufig in Ihr lokales Repository integrieren, können Sie die aktuelle Arbeit von anderen personen kennen und alle auftretenden Zusammenführungskonflikte umgehend beheben.
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 Remoteverfolgungsverzweigung handelt, stellen Sie sicher, dass verzweigt up-to-date ist, indem Sie einen Git-Abruf vor einem Seriendruck ausführen. Oder führen Sie den Git-Pullbefehl aus, der einen Git-Abruf mit einem Git-Seriendruck 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 "Quellverzweigung zusammenführen" in <"Zielverzweigung><" >aus.
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 den Seriendruck abbrechen und zum Zustand der Vorzusammenfü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 im Bereich "Eingehender Bereich" die Version der Quellzweigdatei angezeigt, im Aktuellen Bereich wird die Zielzweigdateiversion angezeigt, und im Ergebnisbereich wird die resultierende Seriendruckdatei 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 die Seriendruckdatei auch direkt 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 Commit-Nachricht ein, und wählen Sie "Commit stufend " aus, um den Seriendruck abzuschließen. Nachdem Sie alle Zusammenführungskonflikte für alle Dateien gelöst haben.