如何从github应用补丁?
我尝试编译minisat,但是我在使用clang进行编译时遇到了两个问题。
第一个问题在this github commit解决,它是从原来的github分而来的。由于变化很小,我可以轻松地修补代码以手动工作。
第二个问题在此github(https://github.com/niklasso/minisat/pull/17)中得到解决,但补丁未应用于原始源。我可以通过复制修改后的文件手动更新代码,但如果我可以将此补丁拉入我的本地目录会更好。用github可以做到吗?如果是的话,该怎么做?
答案 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
以生成修补程序。
就运行命令而言,这就变成了
将补丁下载到您的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
应用补丁
git apply issue1.patch
检查更改,添加和提交。对补丁2重复相同的操作。
您可以查看this blog post以获取有关创建和应用修补程序的精彩教程。
答案 1 :(得分:0)
您可以分叉项目并将第二个添加为第二个远程, 然后,您可以将所需的分支合并到项目中。
<强>
git remote add remote2 git@github.com:niklasso/minisat.git
git fetch remote2
git merge remote2 master
强>
然后更新的代码将合并到您的项目中。 一旦拉取请求将应用于原始仓库(合并拉取请求),您将不会看到任何更改,因为您的副本中已经有了提交ID。