将github提交/拉取请求应用为补丁

时间:2015-02-12 17:40:32

标签: git github pull-request git-patch

如何从github应用补丁?

我尝试编译minisat,但是我在使用clang进行编译时遇到了两个问题。

第一个问题在this github commit解决,它是从原来的github分而来的。由于变化很小,我可以轻松地修补代码以手动工作。

第二个问题在此github(https://github.com/niklasso/minisat/pull/17)中得到解决,但补丁未应用于原始源。我可以通过复制修改后的文件手动更新代码,但如果我可以将此补丁拉入我的本地目录会更好。用github可以做到吗?如果是的话,该怎么做?

2 个答案:

答案 0 :(得分:11)

github为各个提交和拉取请求提供补丁(虽然我找不到相应的文档)。

您只需将.patch附加到原始网址的末尾即可生成修补程序网址。

所以,首先使用https://github.com/JWalker1995/minisat/commit/a8cef9d932552b2ec155d5e0d44d8fe0efa3a235.patch, 和https://github.com/niklasso/minisat/pull/17.patch为第二个。

通用网址github.com/original/url/id将成为github.com/original/url/id.patch以生成修补程序。

就运行命令而言,这就变成了

  1. 将补丁下载到您的git repo

    wget --output-document=issue1.patch https://github.com/JWalker1995/minisat/commit/a8cef9d932552b2ec155d5e0d44d8fe0efa3a235.patch
    wget --output-document=issue2.patch https://github.com/niklasso/minisat/pull/17.patch
    
  2. 应用补丁

    git apply issue1.patch
    

    检查更改,添加和提交。对补丁2重复相同的操作。

  3. 您可以查看this blog post以获取有关创建和应用修补程序的精彩教程。

答案 1 :(得分:0)

您可以分叉项目并将第二个添加为第二个远程, 然后,您可以将所需的分支合并到项目中。

<强> git remote add remote2 git@github.com:niklasso/minisat.git git fetch remote2 git merge remote2 master

然后更新的代码将合并到您的项目中。 一旦拉取请求将应用于原始仓库(合并拉取请求),您将不会看到任何更改,因为您的副本中已经有了提交ID。