Vraag Wat betekent cherry-picking een commit met git?


Onlangs heb ik de opdracht gekregen om een ​​commit te selecteren. Maar ik heb geen idee wat het betekent. Dus wat doet het cherry picking een commit in git bedoel je? Hoe doe je het?


1356
2018-02-18 07:20


oorsprong


antwoorden:


Cherry picking in git betekent een commit van de ene branch kiezen en deze op een andere toepassen.

Dit staat in contrast met andere manieren zoals merge en rebase die normaal veel commits toepassen op een andere branch.

  1. Zorg ervoor dat u zich op de branch bevindt waarop u de commit wilt toepassen.

    git checkout master
    
  2. Voer het volgende uit:

    git cherry-pick <commit-hash>
    

NB .:

  1. Als u een keuze maakt uit een openbare afdeling, kunt u overwegen om te gebruiken

    git cherry-pick -x <commit-hash>
    

    Dit genereert een gestandaardiseerde commit-boodschap. Op deze manier kunnen u (en uw collega's) nog steeds de oorsprong van de commit bijhouden en mogelijk toekomstige samenvoegconflicten voorkomen.

  2. Als je notities bij de commit hebt, volgen ze niet de cherry-pick. Om ze ook over te brengen, moet je gebruiken:

    git notes copy <from> <to>
    

Extra links:


1621
2018-02-18 07:29



Dit citaat is overgenomen van; Versiebeheer met Git (Echt geweldig boek, ik moedig je aan om het te kopen als je geïnteresseerd bent in git)

Bewerken: aangezien dit antwoord nog steeds een indruk krijgt, wil ik er een leuke video-zelfstudie over toevoegen:

YouTube: Introductie van Git cherry-pick

Git cherry-pick gebruiken Het commando git cherry-pick commit past de   wijzigingen geïntroduceerd door de named commit op de huidige branch. Het zal   een nieuwe, afzonderlijke commit introduceren. Strikt genomen, met behulp van git   cherry-pick verandert de bestaande geschiedenis binnen een repository niet;   in plaats daarvan wordt het toegevoegd aan de geschiedenis. Net als bij andere Git-operaties dat   wijzigingen aanbrengen via het proces van het toepassen van een diff, dat kan nodig zijn   conflicten oplossen om de wijzigingen volledig toe te passen op de gegeven commit .   De opdracht git cherry-pick wordt meestal gebruikt om een ​​bepaalde te introduceren   commit van een filiaal binnen een repository naar een andere branch. EEN   algemeen gebruik is om commits vast te leggen van een onderhoud   vertakking naar een ontwikkelingstak.

$ git checkout rel_2.3
$ git cherry-pick dev~2 # commit F, above

voor: before

na: after


180
2018-05-13 15:06



Cherrypicking in Git is ontworpen om wat commit van de ene branch in een andere branch toe te passen. Het kan worden gedaan als u bijvoorbeeld. een fout gemaakt en een verandering in de verkeerde tak begaan, maar niet de hele tak willen samenvoegen. U kunt bijvoorbeeld gewoon. keer de commit terug en pak het op een andere branch.

Om het te gebruiken, moet je gewoon git cherry-pick hash, waar hash is een commit hash van een andere branch.

Zie voor de volledige procedure: http://technosophos.com/2009/12/04/git-cherry-picking-move-small-code-patches-across-branches.html


124
2018-02-18 07:29



cherry-pick is een Git-functie. Als iemand specifieke commits in één branch wil committeren naar een doelvertakking, dan wordt cherry-pick gebruikt.
        git cherry-pick stappen zijn zoals hieronder.

  1. afrekenen (overschakelen naar) doelsectie.
  2. git cherry-pick <commit id>
    

    Hier is commit id activiteit id van een andere branch.Eg.

    git cherry-pick 9772dd546a3609b06f84b680340fb84c5463264f
    
  3. push naar doelvertakking

Bezoek https://git-scm.com/docs/git-cherry-pick


24
2017-08-24 09:39



Je kunt denken dat een Cherry Pick vergelijkbaar is met een rebase, of beter gezegd, het wordt beheerd als een rebase. Hiermee bedoel ik dat het een bestaande commit vereist en het opnieuw genereert, als het startpunt, het hoofd van de branch waar je op dit moment aan toe bent.

EEN rebase neemt een commit met een ouder X en regenereert de commit alsof deze eigenlijk een ouder Y had, en dit is precies wat a cherry-pick doet.

Cherry Pick is meer over hoe je de commits selecteert. Met pull (rebase), genereert impliciet impliciet je lokale commits bovenop wat naar je branch wordt getrokken, maar dan met cherry-pick je kiest expliciet sommige commit (s), en impliceert deze impliciet (ze) bovenop je huidige branch.

Dus de manier waarop je het doet verschilt, maar onder de motorkap zijn ze zeer vergelijkbare operaties - de regeneratie van commits.


7
2018-01-31 22:19



Het is een beetje zoals Kopiëren (ergens vandaan) en Plakken (ergens), maar voor specifieke commits.

Als u bijvoorbeeld een hotfix wilt maken, kunt u de cherry-pick voorzien zijn van.

Doe je cherry-pick in een ontwikkelingstak, en merge die zich verbinden tot een releasetak. Evenzo, doe a cherry-pick van een releasetak naar meester. Voila


2
2017-10-07 11:55