I work on WordPress based project and I want to patch my project at each new release version of WP. For this, I want generate a patch between two commits or tags.
For example, in my repo /www/WP
I do this:
$ git patch-format com1..com2 --stdout > '~/patchs/mypatch.patch'
# or
$ git patch-format tag1..tag2 --stdout > '~/patchs/mypatch.patch'
/www/WP
git natif WordPress
/www/myproject
My git project WordPress based
The git apply
command line doesn't work, I think because we are in different repositories.
Can I generate a patch file without a commit, just a differential and apply it to another git repository?
Thank you.
To produce patch for several commits, you should use format-patch
git command, e.g.
git format-patch -k --stdout R1..R2
This will export your commits into patch file in mailbox format.
To generate patch for the last commit, run:
git format-patch -k --stdout HEAD^
Then in another repository apply the patch by am
git command, e.g.
git am -3 -k file.patch
See: man git-format-patch
and git-am
.
As a complementary, to produce patch for only one specific commit, use:
git format-patch -1 <sha>
When the patch file is generated, make sure your other repo knows where it is when you use git am ${patch-name}
Before adding the patch, use git apply --check ${patch-name}
to make sure that there is no confict.
You can just use git diff
to produce a unified diff suitable for git apply
:
git diff tag1..tag2 > mypatch.patch
You can then apply the resulting patch with:
git apply mypatch.patch
you can apply two commands
git diff --patch > mypatch.patch // to generate the patch
git apply mypatch.patch // to apply the patch
Source: Stackoverflow.com