Git Cherry Pick

git cherry-pick er en kraftfuld kommando, der gør det muligt at vælge vilkårlige Git-kommandoer som reference og føje dem til den aktuelle arbejds-HEAD. Cherry picking er den handling at plukke et commit fra en gren og anvende det på en anden. git cherry-pick kan være nyttig til at fortryde ændringer. Lad os f.eks. sige, at et commit ved et uheld er lavet til den forkerte gren. Du kan skifte til den korrekte gren og cherry-picke commit’et til der, hvor det burde høre hjemme.

Hvornår skal man bruge git cherry pick

git cherry-pick er et nyttigt værktøj, men ikke altid en bedste praksis. Cherry picking kan forårsage dobbeltcommits, og i mange scenarier, hvor cherry picking ville fungere, er traditionelle sammenlægninger at foretrække i stedet. Når det er sagt, er git cherry-pick et praktisk værktøj til nogle få scenarier…

Teamsamarbejde.

Ofte vil et team finde individuelle medlemmer, der arbejder i eller omkring den samme kode. Måske har en ny produktfunktion en backend- og en frontend-komponent. Der kan være noget delt kode mellem til to produktsektorer. Måske skaber backend-udvikleren en datastruktur, som frontend-udvikleren også skal bruge. Frontend-udvikleren kunne bruge git cherry-pick til at vælge den commit, hvor denne hypotetiske datastruktur blev oprettet. Dette valg ville gøre det muligt for frontend-udvikleren at fortsætte fremskridtene på deres side af projektet.

Fejlrettelser

Når en fejl bliver opdaget, er det vigtigt at levere en rettelse til slutbrugerne så hurtigt som muligt. For et eksempel på et scenarie,lad os sige, at en udvikler er begyndt at arbejde på en ny funktion. Under udviklingen af den nye funktion identificerer de en allerede eksisterende fejl. Udvikleren opretter en eksplicit commit, der patcherer denne fejl. Dette nye patch-cit kan blive hentet direkte til master-grenen for at rette fejlen, før den påvirker flere brugere.

Fortrydelse af ændringer og genoprettelse af tabte commits

I nogle tilfælde kan en feature-grene blive forældet og ikke blive flettet ind i master. Nogle gange kan en pull request blive lukket uden at blive fusioneret. Git mister aldrig disse commits, og ved hjælp af kommandoer som git log og git reflog kan de findes og høstes tilbage til livet.

Sådan bruges git cherry pick

For at demonstrere, hvordan man bruger git cherry-pick, lad os antage, at vi har et repository med følgende branch-status:

 a - b - c - d Master
\
e - f - g Feature

git cherry-pick brugen er ligetil og kan udføres som:

git cherry-pick commitSha

I dette eksempel commitSha er en commit-reference. Du kan finde en commit-reference ved at bruge git log. I dette eksempel har vi konstrueret lad os sige, at vi ønskede at bruge commit `f` i master. Først sikrer vi os, at vi arbejder på master-grenen.

git checkout master

Dernæst udfører vi cherry-pick med følgende kommando:

git cherry-pick f

Når den er udført, vil vores Git-historik se ud som følger:

git cherry-pick f
 a - b - c - d - f Master
\
e - f - g Feature

The f commit has been successfully picked into the master branch

Eksempler på git cherry pick

git cherry pick kan også få overgivet nogle eksekveringsindstillinger.

-edit

Givelse af -edit-indstillingen vil få git til at bede om en commit-meddelelse, før cherry-pick-operationen anvendes

--no-commit

Optionen --no-commit vil udføre cherry pick, men i stedet for at lave et nyt commit vil den flytte indholdet af målcommitten ind i arbejdskataloget for den aktuelle gren.

--signoff

Optionen --signoff vil tilføje en ‘signoff’-signaturlinje til slutningen af cherry-pick-kommitteringsmeddelelsen

Ud over disse nyttige muligheder accepterer git cherry-pick også en række forskellige flette-strategiindstillinger. Få mere at vide om disse indstillinger i dokumentationen om git merge strategies.

Dertil kommer, at git cherry-pick også accepterer indstillingsinput til løsning af fusionskonflikter, dette omfatter indstillinger: --abort --continue og --quit disse indstillinger er dækket mere i dybden med hensyn til git merge og git rebase.

Resumé

Cherry-pick er en kraftfuld og praktisk kommando, der er utrolig nyttig i nogle få scenarier. Cherry picking bør ikke misbruges i stedet for git merge eller git rebase. Kommandoen git log er nødvendig for at hjælpe med at finde commits til cherry pick.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.