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
Die Standardbranch ist der erste Branch, den Git bei einem neuen Klon auscheckt. Außerdem zielen Pullanforderungen standardmäßig auf diese Verzweigung ab.
Wir werden den Prozess zum Ändern des Standardbranchs durchgehen. Wir behandeln auch andere Dinge, die Sie berücksichtigen und aktualisieren müssen, wenn Sie diese Änderung vornehmen. Schließlich sehen wir uns ein Tool zur Beschleunigung des Übergangs an.
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. - Berechtigungen für Branch oder Repository festlegen: Berechtigungen verwalten für den Branch oder das Repository. - Verzweigungsrichtlinien festlegen, Statusprüfungen konfigurieren oder die Standardverzweigung ändern: Berechtigung Richtlinien bearbeiten für das Repository oder die Verzweigung oder 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. |
Festlegen einer neuen Standardverzweigung
Sie können einen anderen Zweig als main für neue Änderungen verwenden oder Ihre Hauptentwicklungslinie in Ihrem Repository ändern. Informationen zum Ändern des Standardverzweigungsnamens für neue Repositorys finden Sie unter "Alle Repositoryeinstellungen und -richtlinien".
Zum Ändern der Standardverzweigung Ihres Repositorys zum Zusammenführen neuer Pullanforderungen benötigen Sie mindestens zwei Verzweigungen. Wenn nur ein Branch vorhanden ist, ist dieser bereits der Standardbranch. Sie müssen eine zweite Verzweigung erstellen, um die Standardeinstellung zu ändern.
Hinweis
Das Ändern der Standardverzweigung erfordert, dass Sie über die Berechtigung "Richtlinien bearbeiten" verfügen. Weitere Informationen finden Sie unter Festlegen von Git-Repositoryberechtigungen.
Wählen Sie in Ihrem Projekt-Repository die Verzweigungen aus.
Wählen Sie auf der Seite "Verzweigungen " neben der gewünschten neuen Standardverzweigung weitere Optionen aus, und wählen Sie "Als Standardverzweigung festlegen" aus.
Nachdem Sie die neue Standardverzweigung festgelegt haben, können Sie bei Bedarf den vorherigen Standardwert löschen.
Es gibt andere Aspekte, die Sie berücksichtigen sollten, bevor Sie diese Änderung vornehmen.
Wählen Sie einen Namen aus.
Git 2.28 hat die Möglichkeit hinzugefügt, einen ursprünglichen Verzweigungsnamen auszuwählen.
Gleichzeitig haben Azure Repos, GitHub und andere Git-Hostinganbieter die Möglichkeit hinzugefügt, einen anderen ursprünglichen Branchnamen auszuwählen.
Bisher wurde der Standard-Branch fast immer als master benannt.
Der beliebteste alternative Name ist main.
Weniger häufige Optionen umfassen trunk und development.
Wenn keine Einschränkungen für die Tools, die Sie verwenden, oder das Team, in dem Sie arbeiten, vorliegen, funktionieren alle gültigen Branchnamen.
Aktualisieren anderer Systeme
Wenn Sie zu einer anderen Standardverzweigung wechseln, sind möglicherweise andere Teile Ihres Workflows betroffen. Sie müssen diese Teile berücksichtigen, wenn Sie eine Änderung planen.
Pipelines
Aktualisieren Sie die CI-Trigger für alle Pipelines. Designerpipelinen können im Web bearbeitet werden. YAML-Pipelines können in ihren jeweiligen Repositorys bearbeitet werden.
In-Flight Pull Requests
Retargetieren Sie jede geöffnete Pullanforderung auf die neue Standardverzweigung.
Vorhandene Klonen
Neue Klone des Repositories erhalten den neuen Standard-Branch.
Nach dem Wechsel sollte jeder mit einem vorhandenen Klon git remote set-head origin -a ausführen (ersetzen Sie dabei origin durch den Namen des Remoterepositorys, wenn es sich um ein anderes handelt), um seine Ansicht des Standardbranchs des Remoterepositorys zu aktualisieren.
Zukünftige neue Branches sollten auf der neuen Standardeinstellung basieren.
Eingehende Links
Einige Lesezeichen, Dokumente und andere Nicht-Codedateien, die auf Dateien in Azure Repos verweisen, müssen aktualisiert werden. Der Branchname für eine Datei oder ein Verzeichnis kann in der URL angezeigt werden.
Wenn eine URL einen Querystring für version enthält, z. B. &version=GBmybranchname, sollte diese URL aktualisiert werden.
Glücklicherweise verfügen die meisten Links zur Standard-Branch nicht über ein version Segment und können wie sie sind verlassen werden.
Sobald Sie die alte Standard-Branch löschen, werden alle Versuche, dorthin zu navigieren, dennoch zum neuen Standard-Branch weitergeleitet.
Temporäre Spiegelung
Ein Git-Repository kann nur einen Standardbranch haben. Sie können jedoch für einen gewissen Zeitraum Ad-hoc-Spiegelung zwischen Ihrem alten Standardbranch und dem neuen Standardbranch einrichten. Auf diese Weise müssen Ihre Endbenutzer die Arbeit nicht wiederholen, wenn sie weiterhin in den alten Standardbranch pushen. Wir verwenden Azure Pipelines , um diese temporäre Spiegelung einzurichten.
Hinweis
In diesem Abschnitt wird die Sprache verwendet, die mit der Perspektive von Microsoft in Konflikt steht.
Insbesondere wird das Wort master an mehreren Stellen angezeigt, die mit der Verwendung in Git übereinstimmen.
Der Zweck dieses Themas besteht darin, zu erläutern, wie Sie zu einer inklusiveren Sprache wechseln können, wie zum Beispiel main.
Das vollständige Vermeiden der Erwähnung von master würde die Wegbeschreibung deutlich schwieriger verständlich machen.
Die Spiegelungspipeline
Hinweis
Diese Anweisungen sind nicht narrensicher, und Ihre Repositoryeinrichtung erfordert möglicherweise zusätzliche Änderungen, z. B. das Lockern von Berechtigungen und Richtlinien.
Warnung
Wenn sowohl die alten als auch die neuen Standardbranches aktualisiert werden, bevor diese Pipeline ausgeführt wird, kann die Pipeline die Änderungen nicht spiegeln. Jemand muss die alte Standardverzweigung manuell in die neue Standardverzweigung zusammenführen , damit sie automatisch wieder ausgeführt wird.
Aktualisieren Sie für alle vorhandenen CI-Builds diese so, dass sie für Ihren neuen Standardbranch ausgelöst werden, anstatt für den alten.
Erteilen Sie der Build-Identität die Berechtigung "Mitwirken" für Ihr Repository. Navigieren Sie zu Projekteinstellungen>Repositorys>(Ihr Repository)>Berechtigungen. Es können bis zu zwei Identitäten vorhanden sein: eine für den Projektsammlungs-Builddienst und die andere für den Projektbuilddienst. Stellen Sie sicher, dass die Berechtigung Beitragen: Zulassen lautet.
Wenn der neue Standardbranch über Branchrichtlinien verfügt, erteilen Sie der Buildidentität außerdem die Berechtigung Richtlinien bei Pushvorgängen umgehen. Diese Berechtigung stellt ein Sicherheitsrisiko dar, da ein böswilliger Benutzer eine Pipeline erstellen könnte, um unbemerkt Code in ein Repository Ihres Projekts einzuschleusen. Stellen Sie sicher, diese Berechtigung zu entfernen, wenn die Spiegelung nicht mehr benötigt wird.
Fügen Sie Ihrem Repository im neuen Standardbranch eine neue Datei
mirror.ymlhinzu. In diesem Beispiel wird davon ausgegangen, dass der alte Standard-Branchmasterwar und der neuemainist. Aktualisieren Sie die auslösenden Branches und diegit pushZeile, wenn Ihre Branch-Namen unterschiedlich sind.
trigger:
branches:
include:
- main
- master
pool: { vmImage: ubuntu-latest }
steps:
- checkout: self
persistCredentials: true
- script: |
git checkout $(Build.SourceBranchName)
git push origin HEAD:master HEAD:main
displayName: Mirror old and new default branches
- Erstellen Sie eine neue Pipeline, und wählen Sie im Assistenten "Azure Repos Git" und "Vorhandene Azure Pipelines YAML-Datei" aus.
Wählen Sie die
mirror.ymlDatei aus, die Sie im vorherigen Schritt hinzugefügt haben. Speichern Sie die Pipeline, und führen Sie sie aus.
Problembehandlung
Diese Pipeline wird jedes Mal ausgeführt, wenn ein Push in master oder in main erfolgt.
Sie hält die Branches synchronisiert, solange keine neuen Commits gleichzeitig in beiden Branches eingehen.
Wenn die Pipeline mit einer Fehlermeldung wie „Updates wurden abgelehnt, weil eine gepushte Branchspitze hinter der Remoteversion zurückliegt“ fehlschlägt, muss jemand den alten Branch manuell in den neuen Branch zusammenführen.
- Klonen Sie das Repository und
cdin das zugehörige Verzeichnis. - Sehen Sie sich den neuen Standardbranch mit
git checkout mainan (fallsmainIhr neuer Standardbranch ist). - Erstellen Sie einen neuen Branch zum Integrieren der zwei Branches in
git checkout -b integrate. - Zusammenführen der alten Standardverzweigung mit
git merge master(wennmasterIhre alte Standardverzweigung ist). - Pushen Sie den neuen Branch, öffnen Sie einen Pull Request in den neuen Standardbranch, und schließen Sie diesen ab.
- Die Spiegelungspipeline sollte dann dafür sorgen, dass der Mergecommit wieder in den alten Standardbranch gespiegelt wird.