Question

I downloaded a trunk version of a codebase from git, and there are build errors. Aparently a patch is now available, and I received an email :

see https://github.com/JustinTulloss/zeromq.node/pull/47 for patch

I am new to git so I'm not quite sure what to do with this 'patch' especially, since the page looks more like a discussion thread.

Does anyone know how I can obtain/apply this patch to my locally cloned git repository?

Was it helpful?

Solution

Save the patch somewhere. If you're using linux you can use curl:

curl -L https://github.com/JustinTulloss/zeromq.node/pull/47.patch > /tmp/47.patch

To apply the patch use git apply. You can see if the patch will apply cleanly with the check option. Change to your git directory and run:

git apply --check /tmp/47.patch

If it looks like you want to apply the patch remove the check option

git apply /tmp/47.patch

OTHER TIPS

Just add a .patch at the end to get the patch:

https://github.com/JustinTulloss/zeromq.node/pull/47.patch

You can do something like below:

$ git checkout master
$ curl http://github.com/JustinTulloss/zeromq.node/pull/47.patch | git am
$ git push origin master

http://help.github.com/send-pull-requests/

The rule seems recently changed.

Previously we took a PR and add a .patch at the end to get the patch

http://github.com/[group]/[project]/pull/30583.patch

But now the link is redirect(301) to

https://patch-diff.githubusercontent.com/raw/[group]/[project]/pull/30583.patch

So if you use curl, you could pipe with git apply command to apply a git patch from the Pull Request

curl https://patch-diff.githubusercontent.com/raw/[group]/[project]/pull/30583.patch | git apply

If the patch is not right for you now, use git apply -R command to rollback the change.

To let git download pull request 47 and patch it into mylocalbranch locally, run:

git checkout -b mylocalbranch
git pull origin pull/47/head

If the pull request isn't on the origin repo, run

git remote add patchremote https://github.com/JustinTulloss/zeromq.node
git pull patchremote pull/47/head
git fetch -q origin +refs/pull/47/merge:
git checkout -qf FETCH_HEAD
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top