2012-02-03 19 views

Odpowiedz

26

As of 15.08.2016 GitHub pozwala na zmianę oddział docelową wniosek rozwijanego przez GUI:

screenshot

Można teraz zmienić oddział bazie otwartego żądanie przeciwsobnym. Po utworzeniu żądania pobrania można zmodyfikować gałąź podstawową, aby zmiany w żądaniu pobierania były porównywane z inną gałęzią. Zmieniając podstawową gałąź oryginalnej prośby o pociągnięcie, zamiast otwierać nową z właściwym odgałęzieniem podstawowym, będziesz w stanie zachować cenną pracę i dyskusję.

+1

To powinna być właściwa odpowiedź na to pytanie (po aktualizacji do GitHub, tj.). – stuxnetting

+0

Ta funkcja już nie istnieje (od 2018-02-15), prawda? W ostatnim żądaniu pobierania gałąź docelowa jest wyświetlana w tej samej niebieskiej czcionce na jasnoniebieskim tle jako źródłowe repozytorium/gałąź, a nie jako przycisk. – cgogolin

+0

Ah! To robi! Najpierw należy kliknąć "Edytuj" (co nie wynika z powyższego zrzutu ekranu). Przeoczyłem to. Przepraszam. – cgogolin

52

Osoba przesyłająca może to zmienić, gdy wyśle ​​żądanie pobrania, ale po jego wydaniu nie można go zmienić.

Z drugiej strony można ręcznie połączyć ich gałąź i pchać, co pół-regularnie robię dla źle odebranych żądań ściągania.

Możesz znaleźć hub gem pomocny w pracy z komponentami żądania ciągnięcia.

To perełka owija się proces ręczny, który jest:

  1. Add a remote na rozwidleniu do lokalnej kasy.
  2. Pobierz ten pilot.
  3. git checkout ${target_branch} && git merge ${remote}/${branch}
  4. git push origin ...
+1

Gdybym ręcznie scalić i pchania, będzie Github sobie sprawę, że wniosek został skutecznie przyciąganie zakończona? Jakieś wskazówki, jak połączyć się ze zdalnym oddzielnym repo (widelcem)? – eoinoc

+3

Nie jestem pewien, ale nie bezpośrednio - ponieważ zmiana nie została scalona z gałęzią docelową, więc żądanie pobrania nie zostało zakończone zgodnie z definicją. Musisz ręcznie zamknąć to. Jeśli chodzi o wskaźniki, zobacz edytowany komentarz. –

+0

Polecam używanie 'git merge --no-ff ...' jak wspomina @GuillermoMansilla w swojej odpowiedzi. – jjmontes

7

Nie ma nic złego w roztworze Daniel Pittman jest jednak chciałbym traktować te scala jako "nie do przodu", czyli zmianę kroku numer 3 dla:

git checkout ${target_branch} && git merge --no-ff ${remote}/${branch} 

Używając --no-ff, historia będzie łatwiejsza do odczytania. Będzie wyraźnie powiedzieć, że zobowiązania $n pochodzą od $branch, a także ułatwi Ci życie, jeśli będziesz musiał coś zmienić w tym oddziale.

Aby również odpowiedzieć na pytanie eoinoc i dać dodatkowy wskazówka:

Po wykonaniu scalenia, Twój git CLI poprosi, aby napisać wiadomość, ogólnie komunikat generic pokaże się mówiąc coś podobnego

Scalanie zdalnego śledzenia oddział „user/ich-oddział” w swoim oddziale-

Upewnij się, aby edytować tę wiadomość i zawierać odniesienie do liczby żądań ciągnąć. Czyli: (Zakładając liczbę żądań pociągowy jest 123)

Scalanie zdalnego śledzenia oddział 'user/ich oddziałem' do swojego oddziału-

bibl 123 rozwiązywanie cokolwiek ...

Przy następnej wizycie na stronie github issues/pull-requests i sprawdzeniu konkretnego żądania ściągnięcia, zobaczysz wiadomość z linkiem do zatwierdzenia, gdzie dokonałeś scalenia.

Oto zrzut ekranu z tego, co mam na myśli.

enter image description here

12

Alternatywą pomocą gem piasty wspomniane przez innych odpowiedzi jest use the command line to merge locally pull requests, który pozwala zrobić:

$ git fetch origin 
$ git checkout *target_branch* 
$ git merge pr/XXX 
$ git push origin *target_branch* 

Polecenia powyższe działają tylko bezpośrednio, jeśli najpierw dodać następującą linię do pliku .git/config:

fetch = +refs/pull/*/head:refs/remotes/symbolic_name_origin_or_upstream/pr/* 

Co to oznacza, że ​​można pobrać ALL żądań pobierania. Ponieważ może to nie być pożądane w przypadku wielkich repozytoriów, GitHub zmodyfikował instrukcje tak, aby zawierały składnię git fetch origin pull/ID/head:BRANCHNAME, co pozwala uniknąć modyfikacji pliku konfiguracyjnego i powoduje tylko pobranie tego pojedynczego żądania pobrania.

7

Chociaż nie można zmienić istniejący wniosek ciągnącego, ponieważ nie jest twoje można łatwo utworzyć nowy, jeśli nadal istnieje repozytorium źródło związane - tak, nawet jeśli jest to ktoś inny.

Przejdź do repozytorium zgłaszającego następnie utworzyć nową prośbę ciągnąć w jego/jej repozytorium przy użyciu tych samych zobowiązuje, ale upewnij się, że właściwą gałąź docelowej ustawione poprawnie.

Następnie wróć do własnego repozytorium i zaakceptować nową prośbę ciągnąć. Voila!

+0

Czy to działa, jeśli zmieniły swoje repozytorium? W jaki sposób zapewnić, że "to samo zobowiązuje?" – ragerdl

+0

@ragerdl - jeśli projektujesz z wykorzystaniem modelu "funkcja na gałąź", możesz utworzyć PR z odgałęzieniem w oddziale i powinien on zawierać te same zatwierdzenia. – geerlingguy

+2

Jedyny sposób, aby zrobić to bezpośrednio na GitHub, bez dostępu do lokalnego repozytorium. – kopischke

5

Aby to zrobić, przejdź do strony głównej swojego repozytorium, kliknij gałęzie i zmień domyślną gałąź z master na coś innego, w moim przypadku "dev".

Po tym, gdy ktoś utworzy żądanie pobrania, przycisk merge automatycznie połączy żądanie z "dev" zamiast z master.

enter image description here

+0

dzięki za naprawienie literówki @ Tin Man Doceniam to – abbood

+2

Nie musisz nam dziękować za regulację/edycję. To coś, co robimy dla witryny. Napisuj dobre odpowiedzi, to wystarczy dzięki. –

Powiązane problemy