Chciałbym sklonować repozytorium z GitHub. Problem w tym, że nie chcę głównej gałęzi; Chcę wersję w tym niezatwierdzonym żądaniu ściągnięcia .
Czy mogę sklonować wersję żądania ściągnięcia zamiast głównego repozytorium?
git
github
pull-request
Fresheyeball
źródło
źródło
clone
abyfetch
zobaczyć: stackoverflow.com/questions/6743514/…Odpowiedzi:
Możesz sklonować gałąź, którą chcesz, używając
-b
opcji i dla żądania ściągnięcia:W twoim przypadku gałąź, którą chcesz sklonować, jest gałęzią źródłową żądania ściągnięcia (
feature/mongoose-support
):źródło
Najłatwiej to zrobić w ten sposób:
Będziesz teraz w nowej gałęzi, która jest w stanie żądania ściągnięcia.
Możesz skonfigurować alias, uruchamiając
Teraz możesz sprawdzić dowolny PR, uruchamiając
git pr <pr_number>
, lubgit pr <pr_number> <remote>
jeśli twój pilot github nie jest nazwanyorigin
.źródło
git fetch origin pull/<#>/head:<local_branch_name>
( przez ).gitconfig
pliku poniżej[alias]
:pr = "!f() { git fetch $1 pull/$2/head:pull_$2; git co pull_$2; }; f"
. W ten sposób po prostu piszęgit pr upstream 62
i następną rzeczą, którą wiem, jest nowa gałąź PR # 62 od upstream! Jeśli zawsze używasz,origin
możesz zakodować go na stałe zamiast$1
, ale to zmienia się dla mnie.co
na przykład:
Wprowadź zmiany, zatwierdź je, PUSH i otwórz nowy PR ze swojego forka na GitHub
źródło
Możesz postępować zgodnie ze wskazówkami zawartymi w tym tekście, aby móc bezpośrednio sprawdzić pilota bez konieczności sprawdzania ich repozytorium i gałęzi.
Przykładowe użycie
Dla jednego z moich projektów (github3.py) mam następujące pliki w moim
github3.py/.git/config
Pierwsza linia jest standardem dla każdego pilota, z wyjątkiem tego, że
github
jest zastępowana nazwą pilota. Oznacza to, że głowice zdalne (lub głowy oddziałów na tym serwerze) są „mapowane” na lokalne piloty z prefiksemgithub/
. Więc gdybym to zrobiłgit fetch github
i miał gałąź na GitHubie, która nie była jeszcze zauważona lokalnie na moim komputerze, ściągnęłaby gałąź i mógłbym się na nią przełączyć w następujący sposób:git checkout -t github/branch_name
.Druga linia robi to samo, ale robi to dla żądań ściągnięcia zamiast standardowych gałęzi git. Dlatego widzisz
refs/pull/*/head
. Pobiera nagłówek każdego żądania ściągnięcia w GitHub i mapuje go nagithub/pr/#
. Więc jeśli ktoś wyśle żądanie ściągnięcia i ma numer 62 (na przykład), zrobiłbyś:A potem byłbyś w lokalnym oddziale o nazwie
pr/62
(zakładając, że jeszcze nie istniał). Jest fajny i oznacza, że nie musisz śledzić pilotów ani oddziałów innych osób.źródło
git clone https://github.com/berstend/frappe.git -b feature/mongoose-support /my_clone
głównego dokumentu.git fetch github
, możesz to zrobićgit co -t github/pr/#
. Zapobiega to konieczności kopiowania i wklejania zdalnego adresu URL, ustalania nazwy gałęzi itp. Dzięki temu uzyskujesz dobrze nazwane, zwięzłe i dokładne nazwy gałęzi bez dodatkowych kłopotów. Ale rozumiem, że może się to wydawać przytłaczające.Jak mogę pobrać niescalone żądanie ściągnięcia dla gałęzi, której nie jestem właścicielem?
źródło
git pull
tworzy połączenie z bieżącą gałęzią; zwykle w przypadku PR, które chcesz po prostugit fetch
uzyskać oryginalny kod autora (jest on wtedy dostępny jako FETCH_HEAD). Jeśli chcesz scalić, warto również wspomniećpull/2/merge
(zamiastpull/2/head
) - to sprawia, że GitHub daje ci dokładne zatwierdzenie scalania, które miałoby miejsce, gdybyś teraz kliknął przycisk [Merge].Gdy użytkownik przesyła żądanie ściągnięcia, prosi o scalenie niektórych zmian z gałęzi w ich klonie rozwidlenia z powrotem do repozytorium innego użytkownika.
Żądane zmiany można pobrać ze źródła żądania ściągnięcia. Aby to zrobić, sklonuj repozytorium użytkownika (
git://github.com/berstend/frappe.git
), a następnie sprawdź gałąź, z której utworzył żądanie ściągnięcia (feature/mongoose-support
).źródło
Po zainstalowaniu git-extras
Możesz po prostu użyć
git pr
źródło
Z oficjalnym nowym interfejsem wiersza poleceń Github :
gdzie
44
to numer PR, ale może to być również nazwa oddziału.Zobacz dodatkowe szczegóły i opcje oraz instrukcje instalacji .
źródło
To żądanie pull pokazuje zatwierdzenia z forka tej osoby, dzięki czemu możesz zobaczyć, że wypycha swoje zmiany z
feature/mongoose-support
gałęzi.Możesz sklonować jego repozytorium i pobrać tę gałąź
źródło
Dla mnie to było tak proste, jak
Gdzie
4
został znaleziony:źródło