Как применить патч с гитхаба?
Я пытался скомпилировать minisat, но столкнулся с двумя проблемами при компиляции с clang.
Первая проблема решена в этом коммите github, созданном на основе исходного github. Поскольку изменение незначительное, я мог легко исправить код, чтобы он работал вручную.
Вторая проблема решена в этом github (https://github.com/niklasso/minisat/pull/ 17), но патч не применяется к первоисточнику. Я мог бы вручную обновить код, скопировав измененные файлы, но было бы лучше, если бы я мог перетащить этот патч в свой локальный каталог. Можно ли это сделать с помощью github? Если да, то как это сделать?
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
для создания патча.
Что касается команд для запуска, это становится
Загрузите патчи в репозиторий 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
Применить патчи
git apply issue1.patch
Проверьте изменения, добавьте и зафиксируйте. Повторите то же самое для патча 2.
Вы можете проверить это сообщение в блоге за прекрасное руководство по созданию и применению исправлений.
Вы можете разветвить проект и добавить второй как второй удаленный, затем вы можете объединить нужные ветки в свой проект.
git remote add remote2 git@github.com:niklasso/minisat.git
git fetch remote2
git merge remote2 master
А затем обновленный код будет добавлен в ваш проект. Как только запрос на перенос будет применен к исходному репо (объединенный запрос на перенос), вы не увидите никаких изменений, поскольку у вас уже будет идентификатор фиксации в вашей копии.
Похожие вопросы
Новые вопросы
git
Git — это распределенная система контроля версий с открытым исходным кодом (DVCS). Используйте этот тег для вопросов об использовании Git и рабочих процессах. Не используйте этот тег для общих вопросов по программированию, связанных с репозиторием Git. Не используйте этот тег для вопросов GitHub/GitHub Actions, не связанных с использованием git; вместо этого используйте [github] или [github-actions]. Не используйте тег [github] для проблем, связанных с Git, только потому, что репозиторий размещен на GitHub.