Projekt na GitHub, do którego mam rozwidlenie, zawiera nowe żądania ściągania, które chcę wciągnąć do rozwidlenia, których autor jeszcze nie ściągnął.
Czy istnieje prosty sposób zastosowania żądania ściągania z innych widelców do mojego widelca? Czy brakuje mi czegoś jeszcze?
git
github
pull-request
por
źródło
źródło
Odpowiedzi:
Możesz to zrobić ręcznie dość łatwo:
dodaj drugi widelec jako pilot swojego repozytorium:
pobierz jego repozytorium
Masz dwie opcje zastosowania żądania ściągnięcia (jeśli nie chcesz wybierać 1.)
Jeśli nie zależy ci na zastosowaniu ewentualnych zatwierdzeń, które zostały dodane między początkiem a żądaniem ściągnięcia, możesz po prostu zmienić podstawę gałęzi, na której utworzono żądanie ściągnięcia
Jeśli chcesz tylko zatwierdzeń w żądaniu ściągnięcia, zidentyfikuj ich SHA1 i zrób
źródło
git pull URL branchname
Aktualizacja: za pośrednictwem strony internetowej
Możesz to również zrobić na stronie github.
Zakładam, że powinieneś mieć już fork (
MyFork
) wspólnej repo (BaseRepo
), która ma oczekujące żądanie ściągnięcia z fork (OtherFork
), które Cię interesują.OtherFork
), który zainicjował żądanie ściągnięcia, które chcesz dostać się do fork (MyFork
)OtherFork
OtherFork
gałąź. Wybierz po lewej stronie jako widelec podstawy swojego widelca (MyFork
) ( WAŻNE ).View pull request
powinna zmienić się naCreate pull request
. Kliknij to.Teraz powinieneś mieć oczekujące żądanie ściągnięcia w fork (
MyFork
), które możesz po prostu zaakceptować.źródło
OtherFork
, z menu rozwijanego „porównaj” z prawej strony. Następnie wybrałem lewą stronę jako podstawowy widelec, jak opisano powyżej, ponieważ byłem w stanie utworzyć żądanie ściągnięcia.Jak powiedział wcześniej Tekkub, możesz po prostu wciągnąć gałąź bezpośrednio. Przez większość czasu w GitHub oddział jest po prostu „master” w widelcu projektu użytkownika, który go żąda.
Przykład:
git pull https://github.com/USER/PROJECT/ BRANCH
I jako praktyczny przykład:
Załóżmy, że rozwidliłeś projekt github o nazwie safaribooks, a w projekcie źródłowym występuje następujące żądanie ściągnięcia, które chcesz umieścić w swoim widelcu:
Następnie w sklonowanym folderze projektu widelca uruchom:
źródło
git pull https://github.com/{upstream/project} refs/pull/{id}/head
zamiast tego.Żądania ściągania dla projektu mogą pochodzić od wielu różnych autorów (widelców) i prawdopodobnie nie potrzebujesz osobnego pilota dla każdego widelca. Ponadto nie chcesz przyjmować żadnych założeń dotyczących gałęzi, której autor użył podczas przesyłania żądania ściągnięcia, ani tego, co jeszcze może znajdować się w głównej gałęzi autora. Dlatego lepiej jest odwoływać się do żądania ściągnięcia, tak jak pojawia się ono w repozytorium nadrzędnym, niż jak pojawia się w innych widłach.
Krok 1:
Prawdopodobnie już zrobiłeś ten krok, ale jeśli nie, będziesz potrzebować pilota zdefiniowanego dla projektu nadrzędnego. Adres URL to klonowany adres rozwidlonego projektu. Więcej informacji na temat Konfigurowanie pilota do widelca i Synchronizowanie widelca .
upstream
to nazwa, którą nadajesz pilotowi, i chociaż może być czymkolwiek,upstream
jest nazwą konwencjonalną.Krok 2:
... gdzie
{id}
jest numer żądania ściągnięcia.upstream
to nazwa pilota, z którego należy pobierać, tj. „upstream”, jeśli dokładnie wykonałeś krok 1. Może to być również adres URL, w którym to przypadku możesz pominąć krok 1.Krok 3:
Wpisz komunikat zatwierdzenia dla zatwierdzenia scalania. Możesz zachować wartość domyślną, chociaż zalecam podanie ładnego, jednowierszowego podsumowania z numerem żądania ściągnięcia, rozwiązanym przez niego problemem i krótkim opisem:
źródło
git pull upstream refs/pull/{id}/head
aby wprowadzić zatwierdzenia do lokalnego repozytorium, a następnie odwołać się do nich jakoFETCH_HEAD
(np.git log ..FETCH_HEAD
Aby zobaczyć, co tam jestgit merge FETCH_HEAD
)Kilka bardziej szczegółowych informacji, które działały dla mnie.
Mój plik .git / config dla rozwidlonego repozytorium wygląda następująco:
Następnie uruchom „git fetch source”, które wyświetliło wszystkie żądania ściągania z rozwidlonego repozytorium.
A następnie, aby scalić w konkretnym żądaniu ściągania, uruchom „git merge master origin / pr / 67”
źródło
refs/pull/
przestrzeń nazw tylko do odczytu .smartgit.branch.otherRefs=notes;pull
do smartgit.properties zgodnie z syntevo.com/doc/display/SG/System+Properties - możesz je również stamtąd scalić .To, co bym zrobił, to:
Teraz połączyłem zmiany w gałęzi testowej o nazwie
test_fork
. Aby wszelkie zmiany nie zabrudziły mojego drzewa.Opcjonalnie możesz użyć cherry-pick, jak opisano powyżej, aby wybrać konkretny zatwierdzenie, jeśli jest to bardziej preferowane.
Szczęśliwe podróże :)
źródło
Używam do tego poręcznego skryptu Dandy. Uruchamiam skrypt, wpisując:
i otrzymuje wszystkie żądania ściągania z górnego widelca.
Aby utworzyć skrypt, utwórz plik
~/bin/git-prfetch
.Plik powinien zawierać następujące elementy:
Upewnij się, że ścieżka zawiera skrypt, ustawiając:
Możesz dodać ten plik,
~/.bashrc
aby zmienić na stałe.Teraz upewnij się, że dodajesz widelec, z którego chcesz otrzymywać żądania ściągania:
I wtedy
źródło