Как применить патч с гитхаба?

Я пытался скомпилировать minisat, но столкнулся с двумя проблемами при компиляции с clang.

Первая проблема решена в этом коммите github, созданном на основе исходного github. Поскольку изменение незначительное, я мог легко исправить код, чтобы он работал вручную.

Вторая проблема решена в этом github (https://github.com/niklasso/minisat/pull/ 17), но патч не применяется к первоисточнику. Я мог бы вручную обновить код, скопировав измененные файлы, но было бы лучше, если бы я мог перетащить этот патч в свой локальный каталог. Можно ли это сделать с помощью github? Если да, то как это сделать?

7
prosseek 12 Фев 2015 в 20:40

2 ответа

Лучший ответ

Github предоставляет патчи для отдельных коммитов и запросов на вытягивание (хотя я не могу найти для этого документацию).

Вы можете сгенерировать URL-адрес патча, просто добавив .patch в конец исходного URL-адреса.

Итак, используйте https://github.com/JWalker19952ecd5d5d5d5d5d5d5d5d2d5d5d2d5d5d2d5d2d2d2d2a8ddddd/ / a> для первого, и https://github.com/niklasso/minisat/pull/17.patch на второй.

Общий URL-адрес github.com/original/url/id станет github.com/original/url/id.patch для создания патча.

Что касается команд для запуска, это становится

  1. Загрузите патчи в репозиторий git

    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.

Вы можете проверить это сообщение в блоге за прекрасное руководство по созданию и применению исправлений.

15
mu 無 12 Фев 2015 в 18:18

Вы можете разветвить проект и добавить второй как второй удаленный, затем вы можете объединить нужные ветки в свой проект.

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

А затем обновленный код будет добавлен в ваш проект. Как только запрос на перенос будет применен к исходному репо (объединенный запрос на перенос), вы не увидите никаких изменений, поскольку у вас уже будет идентификатор фиксации в вашей копии.

0
prosseek 12 Фев 2015 в 18:02