如果给出拉数,如何应用git补丁

时间:2011-10-19 19:30:26

标签: git github pull-request

我从git下载了一个代码库的trunk版本,并且存在构建错误。现在可以使用补丁了,我收到了一封电子邮件:

请参阅https://github.com/JustinTulloss/zeromq.node/pull/47了解补丁

我是git的新手,所以我不太清楚如何处理这个'补丁',因为该页面看起来更像是一个讨论主题。

有谁知道我如何获取/应用此补丁到我的本地克隆的git存储库?

5 个答案:

答案 0 :(得分:68)

将补丁保存在某个地方。如果你使用的是linux,你可以使用curl:

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

要应用修补程序,请使用git apply。您可以使用check选项查看补丁是否完全适用。转到你的git目录并运行:

git apply --check /tmp/47.patch

如果您想要应用修补程序,请删除检查选项

git apply /tmp/47.patch

答案 1 :(得分:16)

只需在末尾添加.patch即可获得补丁:

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

您可以执行以下操作:

$ 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/

答案 2 :(得分:7)

该规则最近似乎发生了变化。

之前我们采用PR并在末尾添加.patch以获取补丁

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

但现在链接重定向(301)到

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

因此,如果您使用curl,则可以使用git apply命令来管理来自Pull Request的git补丁

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

如果补丁现在不适合您,请使用git apply -R命令回滚更改。

答案 3 :(得分:3)

要让git下载pull请求47并在本地将其修补到mylocalbranch,请运行:

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

如果拉取请求不在原始仓库上,请运行

git remote add patchremote https://github.com/JustinTulloss/zeromq.node
git pull patchremote pull/47/head

答案 4 :(得分:3)

git fetch -q origin +refs/pull/47/merge:
git checkout -qf FETCH_HEAD