Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022
Visual Studio 2019 | Visual Studio 2022
Git Cherry-Pick kopiert die Änderungen aus mindestens einem Quellbranchcommit in einen Zielbranch. Im Gegensatz zu Merge oder Rebase können Sie mit Cherry-Pick bestimmte Quellbranchcommits auswählen. Für jeden Quellbranchcommit, für den Sie Cherry-Pick ausführen, erstellt Git einen entsprechenden Commit im Zielbranch.
Sie können Cherry-Pick für folgende allgemeine Aufgaben verwenden:
- Übertragen eines bestimmten Features von einem Branch auf einen anderen
- Kopieren von 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. - 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. |
Ausführen von Cherry-Pick für einen Commit
Azure Repos
Azure Repos bietet eingeschränkte Unterstützung für Cherry-Pick. So wird nur das Erstellen eines Pull Requests zum Anwenden eines Hotfixes auf einen Zielbranch unterstützt. Weitere Informationen finden Sie unter Verbessern von Azure DevOps Cherry-Pick.
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 Topic-Branch in einen anderen Zielbranch zu mergen.
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 Zielbranchcommit, 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>Vorschaufeatures>Neue Git-Benutzeroberfläche. 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 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 Zielbranchcommit, 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>
Committen, Stashen oder Verwerfen aller nicht committeten Ä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>
Wenn Sie Cherry-Pick für einen inklusiven Commitbereich ausführen möchten, verwenden Sie die ^..punktbasierte Bereichsnotation (.):
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