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?
The --no-commit option will execute the cherry pick but instead of making a new commit it will move the contents of the target commit into the working directory of the current branch.
The git cherry-pick is a very useful command. It takes changes from a specific commit and applies them to your current branch in a new commit. As a consequence, git cherry pick does not alter your current Git history : instead it adds commits to it.
Usually you cannot cherry-pick a merge because you do not know which side of the merge should be considered the mainline. This option specifies the parent number (starting from 1) of the mainline and allows cherry-pick to replay the change relative to the specified parent.
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
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.
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):
Simply run:
$ 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
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With