Pobierz żądanie ściągnięcia Github jako zunifikowany plik różnicowy

277

Jak mogę pobrać zmiany zawarte w żądaniu ściągnięcia Github jako zunifikowany plik różnicowy?

Thilo
źródło
Zwykle link do poprawki PR jest wysyłany do osoby, która akceptuje PR.
kenorb
Nie jest to jeszcze zaimplementowane w GitLab , ale utworzyłem żądanie funkcji, więc dodaj do niego swoje głosy.
colan

Odpowiedzi:

486

Aby wyświetlić zatwierdzenie jako plik różnicowy / poprawki, wystarczy dodać .difflub .patchna końcu adresu URL, na przykład:

Simone Carletti
źródło
13
Wielkie dzięki. I jest też .patch. Dlaczego nie jest to widoczne w GUI? Jak należy to odkryć?
Thilo
45
Nie jest udokumentowane utrzymanie przepływu stosu w biznesie. Szczerze mówiąc, to jest FAQ # 2
sehe
Również dlatego, że git pulljest preferowaną metodą pobierania i stosowania zmian.
Tekkub
Ooooch, dzięki, ta odpowiedź jest warta złota. (To także blogowanie.) Zastanawiam się, jak każdy zdrowy rozsądek może bez tego pracować i dlaczego nie jest ujawniany w tak kiepskim interfejsie internetowym.
mirabilos
8
Sądząc po tym, co te zwracają, i linkach w dokumentach na stronie developer.github.com/v3/media/... , .diffURL daje proste różnice w domyślnej gałęzi na podstawie git-diff danych wyjściowych git-scm.com/docs/git-diff , a .patchadres URL zawiera konkatenację poszczególnych zatwierdzeń w PR (każdy względem ich zatwierdzenia nadrzędnego) w formacie odpowiednim do wysyłania wiadomości e-mail na podstawie git-format-patch danych wyjściowych git-scm.com/docs/git-format-patch .
rakslice
49

W pewien sposób, aby pozwolić git pobrać żądanie ściągnięcia 123 i załatać je mylocalbranchlokalnie, uruchom:

git checkout -b mylocalbranch
git pull origin pull/921/head
thakis
źródło
10
Lub, aby uzyskać żądanie ściągnięcia w nowym oddziale PR, git fetch origin pull/921/head:PRa następnie połączyć się z bieżącym oddziałem, co daje szansę na przejrzenie zmian git merge PR --no-commit --no-ff
MoonStom
4
Pełna dokumentacja znajduje się na help.github.com/articles/checking-out-pull-requests-locally
JBert
Wymaga to skonfigurowania Git przy użyciu poświadczeń. Nie możesz anonimowo przetestować proponowanej zmiany (tak jak możesz ręcznie zastosować różnicę). To kolejny przypadek, w którym Git bierze prosty przepływ pracy i utrudnia.
jww
2

Aby wprowadzić zmiany PR do lokalnego repozytorium w stanie przejściowym, ale niezaangażowanym, możesz przejrzeć:

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

I z tego wygenerować plik łatki:

git diff --cached > pr123.diff    
Bill Hollings
źródło