Применить github commit / pull request в качестве исправления

Как я могу применить патч с github?

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

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

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


person prosseek    schedule 12.02.2015    source источник


Ответы (2)


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

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

Итак, используйте https://github.com/JWalker1995/minisat/commit/a8cef9d932552b2defapat0e0ec1544d5fe0e /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.

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

person Anshul Goyal    schedule 12.02.2015
comment
@prosseek, перейдите к https://github.com/JWalker1995/minisat/commit/a8cef9d932552b2ec155d5e0d44d8fe0efa3a235.patch и сохраните содержимое как 1.patch, затем перейдите к https://github.com/niklasso/minisat/pull/17.patch и сохраните содержимое как 2.patch. После этого запустите git apply --check 1.patch и git apply --check 2.patch. Если вы не получили никаких ошибок, просто запустите git apply 1.patch, а затем git apply 2.patch, чтобы исправить ваши файлы с изменениями. - person Serban Constantin; 12.02.2015

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

git remote add remote2 [email protected]:niklasso/minisat.git git fetch remote2 git merge remote2 master

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

person CodeWizard    schedule 12.02.2015