logo

Git – Cherry Pick

git selektiv udvælgelse i git betyder at vælge en commit fra en gren og anvende den til en anden gren. Dette er i modsætning til andre måder som f.eks fusionere og overhaling som normalt anvender mange commits i en anden branche.

git cherry-pick er ligesom rebasering , et avanceret koncept og også en kraftfuld kommando. Det bruges hovedsageligt, hvis du ikke vil flette hele grenen, og du vil have nogle af commits.



Hvornår skal man bruge cherry-pick?

Antag, at en udvikler ikke kan genkende, hvilken gren han i øjeblikket er på, og ved en fejl forpligter han sig til en anden gren i stedet for at forpligte sig til hovedgrenen. Nu skal han først løbe for at rette op på det git show , gem derefter commit, tjek hovedgrenen, anvend en patch der, og commit med den samme commit-meddelelse. Men alt dette kan gøres automatisk ved at bruge kun én kommando, dvs. selektiv udvælgelse.

For at forstå bedre henvises til nedenstående diagram som følger:

Før Cherry Pick



Før Cherry Pick

string java udskiftning
Efter Cherry Pick

Efter Cherry Pick

Kommandoen for Cherry-pick er som følger:



git cherry-pick>

Begå hash: En commit-hash er en unik identifikator, der genereres af Git. Hver commit har sin one commit-hash.

linux task manager

Bemærk: Mens du bruger denne kommando, skal du sørge for, at du er på den gren, du vil anvende commit.

Sådan bruges selektiv udvælgelse?

Her er den trinvise forklaring af brugen af ​​cherry-pick-kommandoen i det nedenfor oprettede projekt trinvist vist nedenfor som følger:

Trin 1: Åbning af git bash og oprette et nyt projekt ved navn prøve og initialisering af repoen ved hjælp af det er varmt kommando.

Trin 2: Oprettelse af en ' .txt' fil ved hjælp af vi kommando til projektet lad os sige en indeksfil og føje den til vores eksempelprojekt og lave en commit og skrive en commit-meddelelse, før du trykker på Enter.

Bemærk: Efter at have kørt vi kommando , skriv :wq for at gemme og afslutte filen.

Man kan tjekke din commit ved git log kommando nemt:

Trin 3: Antag nu, at vi har 2 versioner, så opret 2 forskellige grene ved at bruge git gren kommando og flyt til en gren, lad os sige 2 ved at bruge git checkout kommando.

Bemærk: Man kan enkelt se alle grenene ved at køre git branch kommandoen som vist i nedenstående diagram.

Trin 4: Antag nu, at du vil arbejde på en ny funktion, så at oprette og tilføje en ny funktionsfil kan sige feature.txt vha. vi og tilføje kommando som vist nedenfor. Bekræft derefter dine ændringer med en commit-besked.

logo java

Man kan tjekke din commit ved hjælp af git log kommando som vist nedenfor:

Det viser tydeligt vores første commit, hvor vores afdeling 1 er der, og i afdeling 2 er den flyttet længere frem, og vi arbejder i øjeblikket på vores funktion i afdeling 2

Trin 5: Antag nu, at vi fandt en fejl i vores funktion, og vi fandt ud af, at den samme fejl også er til stede i vores 1-gren.

Og nu forsøger vi at rette en fejl eller et problem som vist nedenfor ved at tilføje en fix.txt-fil, lad os antage og tilføje den til den aktuelle gren, dvs. 2, og foretage de nødvendige ændringer.

Tjek vores endelige tilsagn:

Trin 6: Nu, vi har rettet fejlen i gren 2, men vi skal også tilføje denne rettelse til vores gren 1, men vi ønsker ikke at flette denne gren 2 ind i vores gren 1, fordi arbejdet muligvis stadig foregår på funktionen.

I dette scenarie kan vi derfor vælge denne særlige forpligtelse. For at gøre det skal du bare kopiere hash værdi fremhævet i ovenstående diagram, flyt derefter til gren 1 ved at bruge checkout , og brug derefter kommandoen selektiv udvælgelse og indsæt den hash, vi lige har kopieret.

Som det tydeligt fremgår af ovenstående, så bemærker vi, at vi tidligere kun har index.txt, før vi laver cherry-picking, men nu har vi fix.txt-filen også i vores 1. gren.

Hvis vi nu prøver at tjekke git log –oneline , vil vi kunne se, at commit også kom i gren 1.

Nogle vigtige Use Cases af Cherry-pick

Følgende er nogle almindelige anvendelser af Cherry-Pick:

sql datatyper
  1. Hvis du ved en fejl foretager en commit i en forkert gren, kan du ved at bruge cherry-pick anvende de nødvendige ændringer.
  2. Antag, når den samme datastruktur skal bruges af både frontend og backend af et projekt. Så kan en udvikler bruge cherry-pick til at vælge forpligtelsen og bruge den til sin del af projektet.
  3. På det tidspunkt, hvor en fejl er fundet, er det afgørende at formidle en rettelse til slutklienter så hurtigt, som det kunne forventes.
  4. Nogle gange kan en komponentgren blive gammel og ikke blive konvergeret ind i hovedgrenen, og anmodningen kan blive lukket, men da git aldrig mister disse commits, kan den vælges cherry, og den ville være tilbage.

Ulemper ved at bruge Cherry Pick

Cherry-pick bør ikke altid bruges, da det kan forårsage kopiering og adskillige situationer, hvor cherry-picking ville fungere, konventionelle fusioner kan lide alt taget i betragtning. Også i den situation, hvor commits fra 2 eller flere brancher opdaterer lignende kodelinjer med forskellige substanser og cherry-pick den ene commit til den anden branche, giver det også konflikt.

Konklusion

Gits cherry-pick-kommando er et kraftfuldt værktøj til selektivt at anvende specifikke commits mellem grene. Det er fantastisk til at rette fejl og dele kode, men overforbrug af det kan føre til problemer, især når commits berører de samme kodelinjer. Så brug det med omtanke til at opretholde en ren og effektiv kodehistorik.