简体   繁体   中英

Git: Cherry-Pick to working copy without commit

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?

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

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 

For IntelliJ users

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

在此处输入图像描述

Update

This feature was removed and set to true by default. There are many complains and maybe they will return it back.

Meanwhile you can achieve the same result with "Cherry-Pick Selected Changes" from commit view (as mentioned in the thread shared by Neo):

在此处输入图像描述

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.

只需运行:

$ git cherry-pick --no-commit <HASH>

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?

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM