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
Wenn Sie eine Pullanforderung abschließen, führen Sie die Themenverzweigung in Ihrer Standardverzweigung zusammen, in der Regel main. Mit dieser Zusammenführung werden die Commits der Themenverzweigung zu Ihrer Hauptverzweigung hinzugefügt und ein Zusammenführungs-Commit erstellt, um Konflikte zwischen der Standard- und Themenverzweigung abzugleichen. Die Kommentare und Diskussionen in der Pull-Anforderung geben mehr Kontext für die Änderungen, die in der Themenzweig vorgenommen wurden.
Der Commitverlauf in Ihrer main Verzweigung (oder einer anderen Standardverzweigung) folgt aufgrund des verknüpften Themenverzweigungsverlaufs nicht einer geraden Zeile. Da ein Projekt größer wird, steigt die Anzahl der Themenzweige, an denen gleichzeitig gearbeitet wurde, wodurch die Standardzweiggeschichte immer schwieriger zu verfolgen ist.
Die Standardverzweigung ist eine genaue Darstellung des Verlaufs der einzelnen Themenzweige, aber es ist schwierig, umfassendere Fragen zur Entwicklung Ihres Projekts zu beantworten.
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. |
Zusammenführen
Merge ist eine Zusammenführungsoption, mit der Sie den Git-Verlauf von Themenzweigen zusammenführen können, wenn Sie eine Pullanforderung abschließen. Anstatt jeden Commit für die Themenverzweigung zum Verlauf der Standardverzweigung hinzuzufügen, fügt ein Merge alle Dateiänderungen zu einem einzelnen neuen Commit für die Standardverzweigung hinzu. Merge Commit für Merge hat keinen Verweis auf die Themenverzweigung. Es erzeugt einen neuen Commit , der alle Änderungen aus dem Themenzweig enthält. Es wird empfohlen, den Themenzweig zu löschen, um Verwirrung zu vermeiden.
Eine einfache Möglichkeit, dies zu berücksichtigen, besteht darin, dass Ihnen die Seriendruck nur die Dateiänderungen bietet, und eine regelmäßige Zusammenführung gibt Ihnen die Dateiänderungen und den Commit-Verlauf.
Wie ist ein Merge hilfreich?
Die Zusammenführung von Workflows sorgt dafür, dass Ihre Standardmäßige Verzweigungshistorien sauber und einfach zu verfolgen sind, ohne dass Workflowänderungen in Ihrem Team gefordert werden. Mitwirkende an der Themenverzweigung arbeiten wie gewünscht in der Themenverzweigung, und die Standardverzweigungen behalten eine lineare Geschichte mithilfe von Merges. Der Commit-Verlauf einer main Verzweigung, die mit Merges aktualisiert wird, hat einen Commit für jede zusammengeführte Verzweigung. Sie können diesen Verlauf schrittweise durchlaufen, um genau herauszufinden, wann die Arbeit abgeschlossen wurde.
Überlegungen beim Zusammenführen von Daten
Die Zusammenführung von Merge verdichtet die Geschichte der Änderungen in Ihrer Standardverzweigung, daher ist es wichtig, mit Ihrem Team zusammenzuarbeiten, um zu entscheiden, wann sie zusammenführen möchten, anstatt die vollständige Commit-Geschichte eines Themenzweigs beizubehalten. Beim Zusammenführen von Merge empfiehlt es sich, den Quellzweig zu löschen. Durch das Löschen der Quellverzweigung wird Verwirrung verhindert, da die Themenverzweigung selbst keinen Commit zum Zusammenführen in die Standardverzweigung hat.
Vollständige Pullanforderungen mit Merge
Sie können beim Abschließen einer Pullanforderung in Azure Repos auswählen, ob sie zusammenführen möchten.
Wählen Sie im Dialogfeld "Vollständige Pullanforderung" unter "Merge commit" die Option "Commit übernehmen"aus, um den Themenzweig zusammenzuführen.
Mehrere Zusammenführungsbasen
Die Registerkarte "Dateien " in einer Pullanforderung erkennt Diffs anhand eines dreiseitigen Vergleichs. Der Algorithmus berücksichtigt den letzten Commit in der Zielverzweigung, den letzten Commit in der Quellverzweigung und deren gemeinsame Zusammenführungsbasis, z. B. den am besten verwendeten Vorgänger. Der Algorithmus ist eine schnelle, kosteneffiziente und zuverlässige Methode zum Erkennen von Änderungen. Leider gibt es in einigen Fällen mehr als eine echte Basis. In den meisten Repositorys ist dies selten, aber in großen Repositorys mit vielen aktiven Benutzern kann es üblich sein. Sie können manuell überprüfen, ob mehrere Zusammenführungsbasen zwischen den Verzweigungen vorhanden sind. Führen Sie dazu den Befehl aus git merge-base --all feature master . Azure DevOps erkennt das Vorhandensein mehrerer Zusammenführungsbasen für jede PR. Wenn diese erkannt werden, zeigt Azure DevOps die Meldung "Mehrere Zusammenführungsbasen erkannt. Die Liste der angezeigten Commits ist möglicherweise unvollständig" für die PR. Während Azure DevOps die Erkennung mehrerer Zusammenführungsbasen ausführt, wird nicht überprüft, ob die potenzielle Zusammenführungsbasis bereits zusammengeführt wurde oder nicht. Diese Überprüfung erfolgt durch git merge-base. Aus diesem Grund zeigt Azure DevOps möglicherweise die Meldung auch dann an, wenn git merge-base nur eine Zusammenführungsbasis gemeldet wird.
Hinweis
Falls Sie während einer PR-Überprüfung Änderungen verloren haben, stellen Sie sicher, dass mehrere Zusammenführungsbasen nicht die Ursache sind.
Die folgenden Beispielszenarien werden von Azure DevOps als mehrere Basen erkannt, wobei die Zusammenführungsbasen durch Zahlen 1 und zwei angegeben sind:
- Cross-Merges (auch als Criss-Cross bezeichnet) zwischen verschiedenen Zweigniederlassungen (berichtet von Azure DevOps und
git merge-base)
---1---o---A
\ /
X
/ \
---2---o---o---B
- Zusammenführen einer Verzweigung mit anderen zwei (von Azure DevOps gemeldet, aber nicht dadurch
git merge-basewird die Zusammenführungsbasis 2 beseitigt)
---1---o---o---o---A
\ /
\-------2
\ \
\---o---o---o---B
- Behandlung von Rückgängen der Hauptverzweigung, z. B. Ändern des Zusammenführungs-Commits
* 42bb2d2 (HEAD, A) Amended merge commit
|\
| | * 67c9bb8 (other) Merge branch 'A' into B
| | |\
| |/ /
|/| /
| |/
| * fa78e32 add second commit
* | 15845c9 add first commit
|/
* 6a52130 add init
- Aktive Wiederverwendung von Featureverzweigungen
- Andere nichtintuitive und konvolutierte Manipulationen mit Reverts, Kirschauswahlen und Zusammenführungen
Die Erkennung mehrerer Zusammenführungsbasis ist Teil des Sicherheitsbewusstseins. Wenn mehrere Zusammenführungsbasen vorhanden sind, erkennt der Datei-Diff-Algorithmus für die Benutzeroberfläche möglicherweise keine Dateiänderungen, je nachdem, welche Zusammenführungsbasis sie auswäht. Wenn die Dateien in der Pullanforderung unterschiedliche Versionen zwischen den Zusammenführungsbasen aufweisen, tritt eine Mehrfachzusammenführungsbasiswarnung auf.
Weitere Details erhalten Sie in der offiziellen Git-Dokumentation .
Potenzielle Sicherheitsrisiken der Zusammenführung aus mehreren Basen
- Ein böswilliger Benutzer könnte den BENUTZERoberflächenalgorithmus missbrauchen, um böswillige Änderungen zu übernehmen, die in der PR nicht vorhanden sind.
- Wenn änderungen, die in der PR vorgeschlagen werden, bereits in der Zielverzweigung enthalten sind, werden sie auf der Registerkarte "Dateien " angezeigt, lösen jedoch möglicherweise keine Verzweigungsrichtlinien aus, die Ordneränderungen zugeordnet sind.
- Zwei Gruppen von Änderungen an denselben Dateien aus mehreren Zusammenführungsbasen sind möglicherweise nicht in der PR vorhanden. In diesem Fall könnten trügerische Logiklücken entstehen.
Beheben des Problems mit mehreren Zusammenführungsbasen
Mehrere Zusammenführungsbasen zu haben, ist nicht unbedingt schlecht, aber Sie sollten überprüfen, ob alles in Ordnung ist. Um mehrere Zusammenführungsbasen zu entfernen, binden Sie die Verzweigungen an ein einzelnes gemeinsames Vorgänger, indem Sie ihre Verzweigung entweder auf zielbasieren oder das Zusammenführen von Zielzielen in Ihre Verzweigung integrieren. Diese Aktionen entfernen die Warnmeldung und helfen Ihnen zu überprüfen, ob die tatsächlichen Änderungen in Ordnung sind.
Ein Ansatz besteht darin, den Fortschritt vor dem Neubasieren oder Zusammenführen vorläufig zurückzusetzen und zu schieben. Anschließend können Sie eine neue Verzweigung erstellen oder eine leere Verzweigung neu erstellen und Ihre Änderungen aus einem klaren Punkt anwenden. Bei diesem Vorgang ist möglicherweise ein Erzwungener Push auf remote erforderlich, wenn Ihre Änderungen bereits vorhanden sind.
Vermeiden des Problems mit mehreren Zusammenführungsbasen
Hier sind allgemeine Tipps zum Vermeiden des Seriendruckbasisproblems:
- Erstellen Sie bei der Vorbereitung einer Pullanforderung Funktionszweige aus den neuesten Versionen der Haupt- oder Release-Verzweigung.
- Vermeiden Sie das Erstellen von Verzweigungen, die nicht direkt aus stabilen Verzweigungen Ihres Repositorys stammen, es sei denn, dies ist erforderlich.
Was zu tun ist, wenn das Problem mit mehreren Zusammenführungsbasen wieder auftritt
In großen Reposs mit vielen aktiven Mitwirkenden kann dieses Problem besonders unannelich sein. Auch wenn Sie mehrere Basen über die Zusammenführung loswerden, könnte die Situation wieder auftreten. Wenn jemand eine langstehende Pullanforderung schließt, kann dies die Situation neu erstellen. Obwohl Buildrichtlinien und Tests ausgeführt werden, haben Sie keine Möglichkeit, die Pullanforderung abzuschließen. Das Zurücksetzen und Starten einer neuen Verzweigung kann hilfreich sein. Wenn nichts geändert wird, sind Ihre Änderungen wahrscheinlich klar, auch wenn sich die Situation wiederholt.