gitgithubpull-requestgit-patch

Apply github commit / pull request as a patch


How can I apply the patch from github?

I tried to compile minisat, but I came across two issues from the compilation with clang.

The first issue is solved in this github commit, it's forked from the original github. As the change is minute, I could easily patched the code to work manually.

The second issue is solved in this github (https://github.com/niklasso/minisat/pull/17), but the patch is not applied to the original source. I could manually update the code by copying the modified files, but it would be better if I can pull this patch into my local directory. Is it possible to do that with github? If so, how to do it?


Solution

  • github provides patches for individual commits and pull requests (though I can't find the documentation for this).

    You can generate the patch url by simply appending .patch to the end of the original url.

    So, use https://github.com/JWalker1995/minisat/commit/a8cef9d932552b2ec155d5e0d44d8fe0efa3a235.patch for the first, and https://github.com/niklasso/minisat/pull/17.patch for the second.

    The general url github.com/original/url/id would become github.com/original/url/id.patch for generating the patch.

    In terms of commands to run, this becomes

    1. Download the patches to your 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. Apply the patches

      git apply issue1.patch
      

      Check the changes, add and commit. Repeat the same for patch 2.

    You can check this blog post for a nice tutorial around creating and applying patches.