Introductie van GIT Cherry-pick
In dit artikel gaan we de GIT Cherry-pick in detail leren kennen. Er zijn veel programmeurs bezig met dezelfde software-ontwikkeling uit verschillende hoeken van de wereld. Hoe dan de codes te beheren? Hoe ze anderen laten begrijpen welke veranderingen ze hebben aangebracht? Hoe de codes te plegen en verschillende versies te onderhouden? Hoe de codes samen te voegen?
Om deze problemen op te lossen, kwam GIT in de ontwikkelingswereld. GIT is een uitstekend Source Code Management (SCM) en gedistribueerd versiebeheersysteem. GIT is gemaakt door Linux Torvald, de persoon die de Linux-kernel heeft ontwikkeld. Het is duidelijk een open-source tool waarmee elke programmeur kan bijdragen aan het bouwen van een stukje software overal ter wereld.
GIT heeft veel functies. Het kan meerdere takken hebben. Een ontwikkelaar kan codes schrijven nadat hij zijn eigen branch in het lokale systeem heeft gemaakt en deze samenvoegen met de master branch of andere branches van de externe GIT-repository.
Wat is GIT Cherry-pick?
Stel je voor, er wordt gewerkt aan een script over de geschiedenis en evolutie van mobiele telefoons. Er werken dus veel mensen aan hetzelfde project en ze werken allemaal afzonderlijk. Uiteindelijk zal echter ieders script worden samengesteld.
Nu schrijft lid A over Apple-telefoons en realiseert zich plotseling dat het beter kan. Dus informeerde hij de kwestie aan de andere teamleden die aan hetzelfde project werken. Een ander lid X vertelde hem dat hij een script aan het schrijven was op Android-telefoons en vroeg lid A om een kijkje te nemen.
Vervolgens bekeek lid A het script van de teamgenoot en ontdekte dat sommige delen hetzelfde zijn met enkele veranderingen die echt goed zijn. Daarom koos hij die veranderingen en pakte die in zijn eigen script. Dit is hetzelfde wat cherry-pick in GIT noemde op het gebied van softwarecodering.
Git-cherry-pick is een krachtig git-commando en cherry-picking is een proces om een commit van een branch op te pakken en op een andere branch toe te passen. In eenvoudige woorden, er kunnen meerdere branches zijn waar ontwikkelaars hun codes vastleggen. Nu, een ontwikkelaar die zijn codes in tak A zou moeten vastleggen, heeft hij de codes in tak B echter per ongeluk vastgelegd. Op dat moment kan cherry-pick de commit terugschakelen naar de juiste branch.
Gebruik onderstaande opdracht (in Unix-systeem) om verschillende opties voor git-cherry-pick te kennen,
Commando:
$man git-cherry-pick
De syntaxis voor het cherry-pick-commando,
Syntaxis:
git cherry-pick (–edit) (-n) (-m parent-number) (-x)
Wanneer gebruiken we GIT Cherry-pick?
Git-cherry-pick is een handig hulpmiddel, maar niet altijd een best practice. git-cherry-pick kan in de volgende scenario's worden gebruikt,
- Om het te corrigeren wanneer een commit per ongeluk in een andere branch is gemaakt.
- Bij voorkeur traditionele fusies
- Om de wijzigingen in een bestaande commit toe te passen.
- Dubbele commit
- Bug repareren
Hoe werkt GIT Cherry-pick?
Een defect in de code in de productieomgeving en een fix moet worden geïmplementeerd. Nadat de wijziging is geïmplementeerd en een defect is verholpen, is het nu tijd om deze codewijziging terug te brengen in de ontwikkelomgeving, zodat het defect in de toekomst niet steeds opnieuw in de productieomgeving zal optreden.
De eerste optie is een simpele git merge en het is een ideale oplossing als het werkt. Er zijn echter ook andere wijzigingen aangebracht in de productieomgeving en deze kunnen niet worden teruggevoerd naar de ontwikkelomgeving tijdens het samenvoegen. En in dat geval is cherry-pick de juiste optie.
Cherry-pick brengt die commit die alleen voor bugfix is gemaakt. Het kiest niet de andere commits.
Hier is een illustratie,
Fig 1: G en H zijn de productietak commits. A tot F Development branch verbindt zich. Er is een probleem gevonden in de productietak. Een fix is ontwikkeld in H commit die moet worden toegepast in de ontwikkelingstak, maar commit G hoeft niet te worden toegepast.
Fig 2: Commit H wordt nu geplukt in de Development-tak en resulterende Commit is H '. Commit G-wijzigingen zijn niet opgenomen in de ontwikkelingstak.
Hoe GIT Cherry-pick met voorbeeld te gebruiken?
Stel dat we twee branches hebben (master en new_feature) (opdracht gebruikt om de branch-git branch te zien)
We hebben de commit (Highlighted) per ongeluk gemaakt in de new_feature branch. (opdracht gebruikt om het gecommiteerde logs-git log te zien)
Het zou echter alleen in de hoofdtak moeten zijn. Kopieer eerst de gemarkeerde SHA in een notitieblok.
Nu zullen we een git-cherry-pick-opdracht gebruiken om deze commit naar master branch te verplaatsen, maar daarvoor moeten we overschakelen naar master branch (opdracht gebruikt om de branch-git checkout te schakelen < branchname > )
Nu kunnen we zien dat dezelfde commit beschikbaar is in master branch (commando used-git log)
Zie de onderstaande link voor meer voorbeelden van git cherry-pick-opdrachten,
https://git-scm.com/docs/git-cherry-pick
Belangrijke dingen om te onthouden
Drie dingen moeten onthouden wanneer u cherry-pick gebruikt en in een team werkt.
1. standaardiseer commit bericht: het is beter om standaardiseer commit bericht en -x te gebruiken als we cherry-pick uit een publieke branch.
git cherry-pick -x
Het zal conflicten in de toekomst vermijden.
2. kopieer de notities: soms hebben cherry-pick notities en wanneer we cherry-pick uitvoeren, worden de notities niet gekopieerd. Daarom is het beter om het te gebruiken.
git notes copy
3. C herry-pick meerdere commits als ze alleen lineair zijn: We willen meerdere commits zoals G, H kiezen (Fig 1), als ze lineair zijn, gebruik dan alleen het onderstaande commando,
git cherry-pick G^..H
Conclusie
Stel dat we een specifieke commit van een andere branch willen ophalen en op de huidige branch willen toepassen, hier zijn de aanbevolen stappen,
1. Zoek de commit hash die eerst moet worden geplukt.
2. Ga naar de bestemmingstak.
3. git cherry-pick -x
Los de conflicten op als ze zich voordoen. Als er in de oorspronkelijke commit notities staan, moeten deze worden gekopieerd.
git notes copy
Aanbevolen artikelen
Dit is een gids voor GIT Cherry-pick. Hier bespreken we de werking en hoe git cherry-pick met voorbeelden in detail te gebruiken. U kunt ook de volgende artikelen bekijken voor meer informatie -
- Git Tools
- Git-terminologie
- Git Checkout-tag
- Wat is Git Branch?