Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

git - cherry-pick - HOWTO / WHYTO

Problem: You want to test a feature someone has developed, but it only exists in a remote branch which is woefully out of date.

Source

  1. How does cherry-pick solve the problem?
  2. Why won't I use git am or git apply?
like image 445
0x90 Avatar asked Nov 23 '12 03:11

0x90


2 Answers

Problem: You want to test a feature someone has developed, but it only exists in a remote branch which is woefully out of date.

If you merged or rebased, you'd get a bunch of old changes in, possibly conflicting.

With cherry picking, you take one change set, and replay that as a new commit over another branch.

This is useful if you just want one commit onto another branch, without its history.

It's useful to use the -x option, so the commit message contains a note where it was cherry picked from.

Why won't I use git am or git apply?

because git apply is for applying patches (files), and git am for applying series of patches. git cherry-pick applies commits - i.e., commits from your own repo, vs commits you import from other repos.

like image 75
alex Avatar answered Sep 19 '22 11:09

alex


From git help cherry-pick:

git-cherry-pick - Apply the changes introduced by some existing commits

[...]

Given one or more existing commits, apply the change each one introduces, recording a new commit for each. This requires your working tree to be clean (no modifications from the HEAD commit).

So, when you cherry-pick a commit, git takes that commit's changes (its diff) and tries to apply it on your current working directory, creating a new commit that is equivalent to the one you are cherry-picking.

It's a way to re-do another commit's changes on a different history line.

Besides taking the changes, cherry-pick also preserves the original commit's info like author and that.

Lastly, cherry-pick can receive a group of commits to apply, in which case it would act like cherry-picking them one by one, in chronological order (older first).

like image 24
mgarciaisaia Avatar answered Sep 21 '22 11:09

mgarciaisaia