313

I have several branches where I keep certain commits that I want to apply to my working copy every now and then. Initially I tried cherry-picking but I do not want to have the commit in the target branch later.

So I did cherry-pick + reset HEAD~1 --soft

Is there something simpler like cherry-picking to working copy only?

schoetbi
  • 10,981
  • 10
  • 50
  • 71

7 Answers7

536

Use '-n' flag with the cherry-picking which is "no commit"

See here: http://git-scm.com/docs/git-cherry-pick

git cherry-pick -n <HASH>

To then unstage the staged changes

git reset
Jeremy Moritz
  • 12,192
  • 7
  • 37
  • 41
Igal S.
  • 11,488
  • 4
  • 31
  • 44
20

If you are using Terminal

git cherry-pick -n <HASH>

If you are using Intellij Idea

Settings -> Version Control -> git
untick commit automatically on cherry-pick 
Ravinda Lakshan
  • 866
  • 13
  • 13
10

For IntelliJ users

Settings > Version Control > Git: Uncheck Commit automatically on cherry-pick

enter image description here

Trayan Momkov
  • 594
  • 3
  • 14
7

You can also use apply instead of cherry-pick if you're just trying to apply all the changes you made in a commit to your working directory:

git show <commit> | git apply

This will apply the changes made in but will not add them to staging or create a commit.

adamgy
  • 3,029
  • 2
  • 14
  • 27
2

I was getting errors that error: server/metadata/metadata-preui-prod.xml: No such file or directory

So now I do this

git checkout SHA -- server/metadata && git reset -- server/met adata

Old

git show SHA -- file1.txt file2.txt | git apply -

or all files from SHA

git show SHA | git apply -

How to git-cherry-pick only changes to certain files?

rofrol
  • 13,168
  • 7
  • 73
  • 68
2

Simply run:

$ git cherry-pick --no-commit <HASH>
moriarty007
  • 1,909
  • 12
  • 19
1

To solve this in Visual Studio 2019 without opening a console I went to the "Git Repository" window and right clicked on the Git Commit history and did a cherry pick on the commit I wanted. This commits the cherry pick. But then I did a right click on the commit below and did a "Reset -> Keep changes (--mixed)" which reset the commit but kept the changes uncommitted.

Janspeed
  • 2,494
  • 2
  • 20
  • 22