Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Visual Studio 2019 | Visual Studio 2022
Git cherry-pick kopieert de wijzigingen van een of meer bronvertakkingen naar een doelvertakking. In tegenstelling tot samenvoegen of herbaseren kunt u met cherry-pick specifieke commits van de bronvertakking selecteren. Bij elke broncommit die je cherry-pickt, maakt Git een bijbehorende commit op de doelbranch.
U kunt ervoor kiezen om specifieke veelvoorkomende taken aan te pakken:
- Implementeer een specifieke functie van de ene vertakking naar de andere.
- Kopieer werk dat u op de verkeerde tak hebt doorgevoerd.
- Pas een bugoplossing toe op meerdere vertakkingen.
Zie de Azure Repos Git-zelfstudie voor een overzicht van de Git-workflow.
Benodigdheden
Categorie |
Vereisten |
Toegang tot het project |
Lid van een project. |
toestemmingen |
- Code weergeven in privéprojecten: Ten minste Basic toegang. - Klonen of bijdragen aan code in privéprojecten: Lid van de Inzenders beveiligingsgroep of bijbehorende machtigingen in het project. - Machtigingen instellen voor vertakking of opslagplaats: Beheer machtigingen voor de vertakking of opslagplaats. - Standaardvertakking wijzigen: beleidsregels bewerken, machtigingen voor de opslagplaats. - Een opslagplaats importeren: Lid van de Projectbeheerders beveiligingsgroep of Git-projectniveau Opslagplaats maken machtiging ingesteld op Toestaan. Zie Machtigingen voor Git-opslagplaatsen instellen voor meer informatie. |
Diensten |
Repositories ingeschakeld. |
Gereedschappen |
Facultatief. Gebruik az repos opdrachten: Azure DevOps CLI. |
Notitie
In openbare projecten hebben gebruikers met Stakeholder toegang tot volledige toegang tot Azure Repos, waaronder het weergeven, klonen en bijdragen aan code.
Categorie |
Vereisten |
Toegang tot het project |
Lid van een project. |
toestemmingen |
- Code weergeven: ten minste Basis toegang. - Klonen of bijdragen aan code: Lid van de beveiligingsgroep Contributors of bijbehorende machtigingen in het project. |
Diensten |
Repositories ingeschakeld. |
Kersenkiezer een doorvoering
Azure Repos
Azure Repos biedt beperkte ondersteuning voor cherry-picking, en alleen met het doel om een pull request te maken voor het toepassen van een hotfix op een doeltak. Zie Voor meer informatie, zie Improving Azure DevOps cherry-picking.
De optie Cherry-pick in het menu pull-aanvraag in Azure Repos doet het volgende:
- Hiermee maakt u een nieuwe onderwerpbranch op basis van de doelbranch van de pull-aanvraag.
- Cherry-pickt alle wijzigingen van de bronvertakking van de pull-aanvraag naar de nieuwe onderwerpvertakking.
- U wordt gevraagd een nieuwe pull-aanvraag te maken om de nieuwe onderwerpbranch samen te voegen in een andere doelbranch.
Zie Een nieuwe pull-aanvraag maken met cherry-pick voor een stapsgewijze zelfstudie.
GitHub
De GitHub-webinterface biedt geen ondersteuning voor cherry-picking, maar GitHub Desktop wel. Zie Cherry-picking van een commit voor stapsgewijze instructies over hoe je kunt cherry-picken in GitHub Desktop.
Visual Studio 2022 biedt een Git-versiebeheer met behulp van het Git-menu, Git-wijzigingen en via contextmenu's in Solution Explorer. Visual Studio 2019 versie 16.8 biedt ook de Git-gebruikersinterface van Team Explorer . Zie het tabblad Visual Studio 2019 - Team Explorer voor meer informatie.
Kies Git > Manage Branches om het venster Git-opslagplaats te openen.
Klik in het venster Git-opslagplaats met de rechtermuisknop op de doelvertakking en kies Uitchecken.
Klik in de weergave Branches met de rechtermuisknop op de bronvertakking en kies Geschiedenis weergeven om een tabblad Doorvoeringsgeschiedenis te openen.
Klik op het tabblad Geschiedenis met de rechtermuisknop op de commit die u wilt cherry-picken en kies Cherry-Pick. Visual Studio biedt geen ondersteuning voor het kiezen van meerdere doorvoerbewerkingen tegelijk, dus u moet deze stap herhalen voor elke doorvoering die u wilt kiezen.
Visual Studio maakt een nieuwe commit in de doelvertakking die de wijzigingen van de cherry-pick commit bevat. Als de cherry-pick bewerking niet succesvol is voltooid, ontvangt u een melding van Visual Studio.
Visual Studio 2019 versie 16.8 en nieuwere versies biedt een Git-versiebeheerervaring met behoud van de Git-gebruikersinterface van Team Explorer . Als u Team Explorer wilt gebruiken, schakelt u Extra>Opties>Preview-functies>Nieuwe Git-gebruikerservaring uit in de menubalk. U kunt Git-functies van beide interfaces door elkaar gebruiken.
Selecteer in Team Explorer de Home-knop en kies Vertakkingen.
Klik in de weergave Vertakkingen met de rechtermuisknop op de doelvertakking en kies Uitchecken.
Klik in de weergave Branches met de rechtermuisknop op de bronvertakking en kies Geschiedenis weergeven om een tabblad Doorvoeringsgeschiedenis te openen.
Klik met de rechtermuisknop op de commit die je wilt cherry-picken op het tabblad Geschiedenis en kies Cherry-Pick. Visual Studio biedt geen ondersteuning voor het kiezen van meerdere doorvoerbewerkingen tegelijk, dus u moet deze stap herhalen voor elke doorvoering die u wilt kiezen.
Visual Studio maakt een nieuwe doorvoer voor een doelvertakking die de wijzigingen van de door de kersen gekozen doorvoer bevat. Als de kersenkiesbewerking niet is voltooid, ontvangt u een melding van Visual Studio.
Gebruik de git log
opdracht om commits in de bronbranch weer te geven. De --oneline
vlag vat de commit-informatie samen.
git log --oneline <source branch>
Git vermeldt eerst de meest recente doorvoeringen. Elke doorvoer-id is een gedeeltelijke SHA-1-hash die de doorvoer uniek identificeert. Voorbeeld:
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.
Noteer de ID van de commit die u wilt cherry-picken.
Schakel over naar de doelbranch, als deze nog niet is uitgecheckt.
git checkout <target branch>
Niet-doorgevoerde wijzigingen doorvoeren, opslaan of negeren.
Om een enkele commiten te cherry-picken:
git cherry-pick <commit ID>
Om meerdere commits te cherry-picken, scheidt u de commit-ID's met spaties. De commits worden toegepast in de volgorde waarin u ze invoert.
git cherry-pick <commit1 ID> <commit2 ID> <commit3 ID>
Als u een reeks commits inclusief wilt selecteren, gebruikt u de ^..
puntbereiknotatie:
git cherry-pick <oldest-commit ID>^..<newest-commit ID>
Wanneer u meerdere commits cherry-pickt, maakt de standaardopdracht cherry-pick een bijbehorende reeks nieuwe commits aan voor de doeltak. Gebruik de -n
vlag om Git te laten faseren en de wijzigingen in de doelbranch niet door te voeren:
git cherry-pick -n <commit1 ID> <commit2 ID>
Vervolgens kunt u handmatig één commit maken die alle wijzigingen van de cherry-pick operatie bevat.
Git zal u op de hoogte stellen als er samenvoegingsconflicten optreden tijdens de cherry-pick-opdracht. U kunt de conflicten oplossen en daarna git cherry-pick --continue
uitvoeren, of git cherry-pick --abort
uitvoeren om de cherry-pick ongedaan te maken.
Volgende stappen
Verwante artikelen: