Git cherry pick examples

Sometimes you just need to pull one or more commits from one branch into another branch without pulling any other changes from that branch.

Git cherry-pick is a powerful command that enables arbitrary Git commits to be picked by reference and appended to the current working HEAD. Cherry picking is the act of picking a commit from a branch and applying it to another.

git cherry-pick can also be used in cases like, say a commit is accidently made to the wrong branch. You can switch to the correct branch and cherry-pick the commit to where it should belong, so you don’t have to re-create files in correct branch and copy them etc.

Simply put, cherry-pick is picking a single commit from one branch and put that commit to a different branch.

Enough talk, here are quick example of a cherry-picking.

➜  git-examples git:(main) git log --oneline

bd2de1e (HEAD -> main, origin/main, origin/HEAD, release_3) adding testfile1
6b65eee Initial commit

➜  git-examples git:(main) git checkout release_2
Switched to branch 'release_2'
➜  git-examples git:(release_2) git log --oneline

257d33f (HEAD -> release_2, origin/release_1, release_1) release_1_feature_1 commit
0ffa8e2 release_1_file commit
bd2de1e (origin/main, origin/HEAD, release_3, main) adding testfile1
6b65eee Initial commit

➜  git-examples git:(main) git checkout release_3
Switched to branch 'release_3'
➜  git-examples git:(release_3) git log --oneline

bd2de1e (HEAD -> release_3, origin/main, origin/HEAD, main) adding testfile1
6b65eee Initial commit

Now if you want to just pull commit 257d33f from the release_2 branch, you can use cherry-pick command.

➜  git-examples git:(release_3) git cherry-pick -x 257d33f
[release_3 8d9086b] release_1_feature_1 commit
 Date: Thu Nov 12 01:11:33 2020 +0000
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 release_1_feature_1
➜  git-examples git:(release_3)

Once you have cherry picked 257d33f you can verify it with git log command that changes from that commit are not in release_3 branch as well.

➜  git-examples git:(release_3) git log --oneline

8d9086b (HEAD -> release_3) release_1_feature_1 commit
bd2de1e (origin/main, origin/HEAD, main) adding testfile1
6b65eee Initial commit

Comments

comments powered by Disqus