Скачать Github pull request как унифицированный diff


278

Как я могу загрузить изменения, содержащиеся в запросе Github, в виде унифицированного diff?


Обычно ссылка на патч PR отправляется человеку, который принимает PR.
Кенорб

Это еще не реализовано в GitLab , но я создал запрос на добавление функций, поэтому, пожалуйста, добавьте к нему свои голоса.
колан

Ответы:


487

Чтобы просмотреть фиксацию в виде файла diff / patch, просто добавьте .diffили .patchв конец URL, например:


13
Большое спасибо. И есть также .patch. Почему это не отображается в графическом интерфейсе? Как можно обнаружить это?
Тило

45
Не документировано, чтобы сохранить стекопоток в бизнесе. Честно говоря, это FAQ # 2
sehe

Кроме того, потому что git pullэто предпочтительный метод загрузки и применения изменений.
Tekkub

Оооооо, спасибо, этот ответ стоит золота. (Это тоже пост в блоге.) Интересно, как любой здравомыслящий человек может работать без этого, и почему он не раскрывается в веб-интерфейсе «достаточно дрянной, как есть».
Мирабилось

8
Судя по тому, что они возвращают, и по ссылкам в документах на developer.github.com/v3/media/… , .diffURL дает прямую разницу в ветку по умолчанию, основанную на git-diff выводе git-scm.com/docs/git-diff , и .patchURL дает конкатенацию отдельных коммитов в PR (каждый относительно их родительского коммита) в формате, подходящем для электронной почты на основе git-format-patch выходных данных git-scm.com/docs/git-format-patch .
Ракслице

49

В некотором роде, чтобы позволить git скачать запрос на извлечение 123 и установить его mylocalbranchлокально, выполните:

git checkout -b mylocalbranch
git pull origin pull/921/head

10
Или получить запрос на получение новой PR-ветви, git fetch origin pull/921/head:PRа затем объединить ее с текущей веткой, что git merge PR --no-commit --no-ff
даст

4
Полная документация находится по адресу help.github.com/articles/checking-out-pull-requests-locally
JBert

Для этого вам необходимо настроить Git с вашими учетными данными. Вы не можете анонимно протестировать предлагаемое изменение (как вы могли бы, применив diff вручную). Еще один пример того, как Git принимает простой рабочий процесс и усложняет его.
jww

2

Чтобы внести изменения PR в локальное репо в поэтапном, но незафиксированном состоянии, вы можете просмотреть:

git pull origin pull/123/head --no-commit

И создать файл патча из этого:

git diff --cached > pr123.diff    
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.