Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022
Visual Studio 2019 | Visual Studio 2022
Git cherry-pick kopiert die Änderungen von einem oder mehreren Quellbranch-Commits in einen Zielbranch. Im Gegensatz zu Merge oder Rebase können Sie mit Cherry-Pick bestimmte Quellbranchcommits auswählen. Für jeden Quell-Branch-Commit, den Sie per Cherry-Pick übernehmen, erstellt Git einen entsprechenden Commit im Ziel-Branch.
Sie können Cherry-Pick für folgende allgemeine Aufgaben verwenden:
- Übertragen eines bestimmten Features von einem Branch auf einen anderen
- Kopieren Sie die Arbeit, die Sie auf dem falschen Branch committet haben.
- Anwenden einer Fehlerbehebung auf mehrere Branches
Eine Übersicht über den Git-Workflow finden Sie im Azure Repos-Git-Tutorial.
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. - Verzweigungs- oder Repository-Berechtigungen festlegen: "Berechtigungen verwalten" sind Berechtigungen für die Verzweigung oder das Repository. - Standard-Branch ändern: Bearbeitungsrichtlinien sind Berechtigungen für das Repository. - Importieren eines Repositorys: Mitglied der Sicherheitsgruppe "Projektadministratoren" oder Git-Projektebene-Berechtigung "Repository erstellen" auf "Zulassen" gesetzt. 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. |
Cherry-Pick für einen Commit
Azure Repos
Azure Repos bietet eingeschränkte Unterstützung für Cherry-Picking und nur zu dem Zweck, einen Pull Request zu erstellen, um einen Hotfix auf einen Ziel-Branch anzuwenden. Weitere Informationen finden Sie unter Verbesserung der Auswahl von Änderungen in Azure DevOps.
Die Option Cherry-Pick im Menü „Pull Request“ von Azure Repos funktioniert wie folgt:
- Aus dem Zielbranch des Pull Requests wird ein neuer Topic-Branch erstellt.
-
Alle Änderungen am Quellbranch des Pull Requests werden mit Cherry-Pick in den neuen Topic-Branch übertragen.
- Sie werden aufgefordert, einen neuen Pull Request zu erstellen, um den neuen Themen-Branch in einen anderen Ziel-Branch zusammenzuführen.
Ein schrittweises Tutorial finden Sie unter Erstellen eines neuen Pull Requests mit Cherry-Pick.
GitHub
Die Weboberfläche von GitHub unterstützt kein Cherry-Picking, GitHub Desktop dagegen schon. Eine schrittweise Anleitung zum Cherry-Picking in GitHub Desktop finden Sie unter Cherry-Picking eines Commits.
Visual Studio 2022 bietet Git-Versionskontrolle mithilfe des Git-Menüs, Git-Änderungen sowie über Kontextmenüs im 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.
Wählen Sie Git > Branches verwalten aus, um das Fenster Git-Repository zu öffnen.
Klicken Sie im Fenster Git-Repository mit der rechten Maustaste auf den Zielzweig, und wählen Sie Checkout aus.
Klicken Sie in der Ansicht Branches mit der rechten Maustaste auf den Quellbranch, und wählen Sie Verlauf anzeigen aus, um eine Registerkarte Verlauf für Commits zu öffnen.
Klicken Sie auf der Registerkarte Verlauf mit der rechten Maustaste auf den Commit, für den Sie Cherry-Pick ausführen möchten, und wählen Sie Cherry-Pick aus. Visual Studio bietet keine Unterstützung für die gleichzeitige Ausführung von Cherry-Pick für mehrere Commits. Daher müssen Sie diesen Schritt für jeden Commit wiederholen, für den Sie Cherry-Pick ausführen möchten.
Visual Studio erstellt einen neuen Ziel-Branch-Commit, der die Änderungen aus dem Cherry-Pick-Commit enthält. Wenn der Cherry-Pick-Vorgang nicht erfolgreich abgeschlossen wird, werden Sie von Visual Studio benachrichtigt.
Visual Studio 2019, Version 16.8 und höher, bietet eine Benutzeroberfläche für Git-Versionskontrolle, während die Team Explorer-Git-Benutzeroberfläche beibehalten wird. Um Team Explorer zu verwenden, deaktivieren Sie in der Menüleiste Extras>Optionen>Vorschaufunktionen>Neue Git-Benutzererfahrung. Sie können Git-Features über beide Schnittstellen austauschbar verwenden.
Wählen Sie in Team Explorer die Schaltfläche Start und dann Branches aus.
Klicken Sie in der Ansicht Branches mit der rechten Maustaste auf den Zielbranch, und wählen Sie Check-Out aus.
Klicken Sie in der Ansicht Branches mit der rechten Maustaste auf den Quellzweig und wählen Sie Verlauf anzeigen aus, um die Verlauf-Registerkarte der Commits zu öffnen.
Klicken Sie auf der Registerkarte Verlauf mit der rechten Maustaste auf den Commit, für den Sie Cherry-Pick ausführen möchten, und wählen Sie Cherry-Pick aus. Visual Studio bietet keine Unterstützung für die gleichzeitige Ausführung von Cherry-Pick für mehrere Commits. Daher müssen Sie diesen Schritt für jeden Commit wiederholen, für den Sie Cherry-Pick ausführen möchten.
Visual Studio erstellt einen neuen Commit des Zielzweigs, der die Änderungen aus dem Cherry-Pick-Commit enthält. Wenn der Cherry-Pick-Vorgang nicht erfolgreich abgeschlossen wird, werden Sie von Visual Studio benachrichtigt.
Verwenden Sie den git log-Befehl, um die Commits des Quell-Branches aufzulisten. Das --oneline-Flag kürzt die Commit-Informationen ab.
git log --oneline <source branch>
Git listet zuerst die neuesten Commits auf. Jede Commit-ID ist ein partieller SHA-1-Hash, der den Commit eindeutig identifiziert. Beispiel:
e745d06 (HEAD -> add-network-controller) Add a test initialization class
a89f48e (origin/add-network-controller) Add fiber optic transceiver test
31da50b Add network switch test
e74baa2 (origin/main, origin/HEAD, test-fiber-optic-transmitter, main) Add readme content
0c14391 Add readme file
32e3946 Add project files.
Notieren Sie sich die ID des Commits, für den Sie Cherry-Pick ausführen möchten.
Checken Sie den Zielbranch aus, falls er noch nicht ausgecheckt ist.
git checkout <target branch>
Übergeben, zwischenlagern oder verwerfen Sie alle nicht gesicherten Änderungen.
Um einen einzelnen Commit herauszupicken:
git cherry-pick <commit ID>
Wenn Sie Cherry-Pick für mehrere Commits anwenden möchten, trennen Sie die Commit-IDs durch Leerzeichen. Die Commits werden in der Reihenfolge angewendet, in der Sie sie eingeben:
git cherry-pick <commit1 ID> <commit2 ID> <commit3 ID>
Verwenden Sie die ^..Punktbereichsnotation, um einen inklusiven Bereich von Commits auszuwählen:
git cherry-pick <oldest-commit ID>^..<newest-commit ID>
Wenn Sie Cherry-Pick für mehrere Commits ausführen, erstellt der standardmäßige Cherry-Pick-Befehl eine entsprechende Sequenz der neuen Zielbranchcommits. Verwenden Sie das -n-Flag, um Git anzuweisen, die Änderungen am Zielbranch zu stagen und nicht zu committen:
git cherry-pick -n <commit1 ID> <commit2 ID>
Anschließend können Sie manuell einen einzelnen Commit erstellen, der alle Änderungen aus dem Cherry-Pick-Vorgang enthält.
Wenn während des Cherry-Pick-Vorgangs Merge-Konflikte auftreten, werden Sie von Git darüber benachrichtigt. Sie können entweder die Konflikte lösen und dann git cherry-pick --continue ausführen oder git cherry-pick --abort ausführen, um den Cherry-Pick-Vorgang rückgängig zu machen.
Nächste Schritte
Verwandte Artikel