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

Hom*_*lli 37 git github pull-request

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

有关补丁,请参阅https://github.com/JustinTulloss/zeromq.node/pull/47

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

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

And*_*rew 69

在某处保存补丁.如果你使用的是linux,你可以使用curl:

curl -L https://github.com/JustinTulloss/zeromq.node/pull/47.patch > /tmp/47.patch
Run Code Online (Sandbox Code Playgroud)

要应用补丁使用git apply.您可以看看该补丁是否适用于该check选项.转到你的git目录并运行:

git apply --check /tmp/47.patch
Run Code Online (Sandbox Code Playgroud)

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

git apply /tmp/47.patch
Run Code Online (Sandbox Code Playgroud)

  • 要在您的历史记录中提交提交(包括作者姓名,提交评论等),请使用`git am`而不是`git apply`. (3认同)
  • 仅供参考,“.patch” URL 连接了 PR 分支中的所有单独提交(相对于当时的先前提交),因此可能无法完全应用于当前的 master。您可以使用“.diff”来获取与当前主版本的差异。 (2认同)

man*_*lds 19

只需.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
Run Code Online (Sandbox Code Playgroud)

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


gas*_*lin 7

最近似乎改变了规则.

以前我们采取了PR并.patch在最后添加了一个补丁

http://github.com/[group]/[project]/pull/30583.patch
Run Code Online (Sandbox Code Playgroud)

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

https://patch-diff.githubusercontent.com/raw/[group]/[project]/pull/30583.patch
Run Code Online (Sandbox Code Playgroud)

因此,如果您使用curl,您可以通过git apply命令管道从Pull Request应用git补丁

curl https://patch-diff.githubusercontent.com/raw/[group]/[project]/pull/30583.patch | git apply
Run Code Online (Sandbox Code Playgroud)

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

  • 将`-L`参数添加到curl以使curl遵循301/302重定向. (6认同)

tha*_*kis 5

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

git checkout -b mylocalbranch
git pull origin pull/47/head
Run Code Online (Sandbox Code Playgroud)

如果拉取请求不在原始存储库中,请运行

git remote add patchremote https://github.com/JustinTulloss/zeromq.node
git pull patchremote pull/47/head
Run Code Online (Sandbox Code Playgroud)