Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I remove an applied git patch?

Tags:

git

github

I have a git repo, where we apply many patches in test environment.

git apply --stat --check --ignore-whitespace /home/kent/Desktop/patches/test.patch --exclude .gitignore  git am -s --ignore-whitespace /home/kent/Desktop/patches/test.patch --exclude .gitignore --exclude .gitignore 

If I have to remove the patch and apply a new one, at present I clone the live content and reapply all the test patches and push again. This process is somehow cumbersome and also leads to errors at times I also miss one or two patches.

I wanted to know if there is a way to remove a patch and apply the new one

Also, to add one way is there if we commit each time to the patch and then i can use:

git revert <<commit id>> 

The above does not work for me at all times.

like image 302
coldy Avatar asked Dec 21 '15 17:12

coldy


People also ask

How do I undo a git patch?

When you then run git apply -R git will simply do the opposite to the patch. Using HEAD~3 creates a patch from a single commit for me.

How can I see my git patch?

Git Cola includes an "Apply Patches" dialog that can be launched from the Actions menu, or via the git cola am sub-command. You can open patches in this dialog and display the contents with diff syntax highlighting. This feature is available in master by cloning the repo and will be in the upcoming v3.

What is Apply patch in git?

GIT patch or GIT diff is used to share the changes made by you to others without pushing it to main branch of the repository. This way other people can check your changes from the GIT patch file you made and suggest the necessary corrections.

Why is git apply skipping patch?

A patch is usually skipped when the changes it contains were already applied in the past. There are many possible reasons for this: a merge, a cherry-pick, changes operated manually or using another patch etc.


1 Answers

TL;DR

You can revert a patch with:

$ git apply -R <patch> 

You can generate a patch either by one of the following:

This will generate a patch from a diff

$ git diff --patch > 0001-some-modifications.patch 

If you want to generate a patch for just the HEAD commit:

$ git show --patch HEAD^ > 0001-some-modifications.patch 

You can generate a patch for the previous 3 commits from HEAD:

$ git show --patch HEAD~3 > 0001-some-modifications.patch 

You can apply the patch by:

$ git apply -- 0001-some-modifications.patch 

You can revert a patch with:

$ git apply -R <patch> 

When you generate a patch it is just a diff with metadata; files, line numbers adds/removes; something along the following:

commit 9dad147cbf16befecdef2e812c1249499bdef5ac Author: My Name <[email protected]> Date:   Mon Dec 21 20:46:01 2015 +0000      Example commit message.  diff --git a/src/example.md b/src/example.md new file mode 100644 index 0000000..ab73512 --- /dev/null +++ b/src/example.md @@ -0,0 +1,3 @@ +# Example document + + Hello World 

So when you use git apply you're essentially applying the edits as per to the tree.

When you then run git apply -R git will simply do the opposite to the patch.

like image 92
Ash Avatar answered Sep 25 '22 07:09

Ash