Скачать 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
thakis
источник
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    
Билл Холлингс
источник