GitHub: ponowne otwieranie scalonego żądania ściągnięcia

101
  • Dokonałem pewnych zmian
  • Złożyłem prośbę o wycofanie
  • Żądanie ściągnięcia zostało zaakceptowane i scalone.
  • Znaleźliśmy błąd
  • Zmiany zostały ponownie usunięte, podczas gdy naprawiałem błąd.

Teraz naprawiłem błąd i chcę ponownie przesłać żądanie ściągnięcia z 1 dodatkowym zatwierdzeniem. Czy istnieje sposób, aby ponownie otworzyć żądanie ściągnięcia lub zaktualizować je, czy też muszę utworzyć nowe żądanie ściągnięcia, ponownie wpisać opis itp.? Gitorious ma tę funkcję i niedawno przenieśliśmy się do GitHub.

Michael Parker
źródło
Byłem dzisiaj w podobnej sytuacji, tzn. Użyłem przycisku "Merge Pull Request", który domyślnie łączy zmiany w gałęzi docelowej i zamyka PR. Później odkryłem błąd w testowaniu, który chciałem naprawić przez pierwotnego programistę. Chciałem znaleźć sposób na ponowne otwarcie tego żądania ściągnięcia, aby można było dodać więcej zatwierdzeń do tego samego żądania ściągnięcia, ale nie mogłem, ponieważ nie ma przycisku do ponownego otwarcia żądania ściągnięcia.
SBirthare

Odpowiedzi:

114

Wydaje się, że odpowiedź brzmi: nie możesz.

Po scaleniu i zamknięciu żądania ściągnięcia jest ono zablokowane na zawsze i nie można go ponownie otworzyć. Jeśli twoje żądanie ściągnięcia jest scalone, zamknięte, a następnie twoje zmiany są wyciągane (przez wymuszenie cofania do przed scaleniem), będziesz musiał dodać zatwierdzenia do gałęzi i utworzyć nowe żądanie ściągnięcia, kopiując wszystkie szczegóły i prawdopodobnie zapewniając łącze do oryginalnego żądania ściągnięcia, aby ręcznie zapisać historię.

Może to być niezła prośba o funkcję dla przyszłego GitHuba.

Michael Parker
źródło
8
Nie wiem, kiedy zostało zmienione, ale możesz teraz komentować i ponownie otwierać zamknięte PR.
LB
16
@LB, wygląda na to, że nie możesz ponownie otwierać PR, które zostały zamknięte i połączone .
A Kaptur,
1
Właściwie możesz. Zakładając, że cofnąłeś początkowe scalanie, możesz utworzyć gałąź głównego repozytorium, a na tej nowej gałęzi po prostu cofnij zatwierdzenie, które cofało scalanie.
SsjCosty
7
@SsjCosty Ale to nie jest ponowne otwarcie zamkniętego i połączonego PR. Zawsze możesz otwierać nowe żądania ściągnięcia, czego wymaga Twoje rozwiązanie.
Adam Grant,
1
„Może to być niezła propozycja funkcji dla przyszłego GitHuba”. Właściwie nie, nie byłoby. Gdyby PR można było przedefiniować po utworzeniu, ludzie oglądający PR w różnym czasie potencjalnie by dryfowali. Po prostu utwórz kolejny PR i „wspomnij” o poprzednim w tekście. Jeśli chcesz odnieść się do jakiegoś kamienia milowego, to nie chodzi o PR, to byłyby tagi.
Scott Prive
12

Właśnie pomyślnie ponownie otworzyłem żądanie ściągnięcia przez

  1. Komentując żądanie ściągnięcia
  2. Kliknięcie przycisku „Prześlij i otwórz ponownie”, który pojawił się w formularzu komentarza.
Tim Lovell-Smith
źródło
1
Nie udało mi się tego powtórzyć - czy możesz wyjaśnić kroki wymagane do zobaczenia tego zachowania? Próbowałem skomentować zamknięte żądanie ściągnięcia (nie zadziałało), skomentowałem zamknięte żądanie ściągnięcia i wypchnięcie do gałęzi, którą pobierał (nie działało). Coś jeszcze do spróbowania? Czy żądanie ściągnięcia musi zostać scalone, a następnie w jakiś sposób usunięte?
Michael Parker
Nie wiem, jakie ukryte wymaganie ma znaczenie. Może to być dowolny z (przesłałem nową zmianę do żądania ściągnięcia, jestem członkiem właściciela projektu, inny ...)
Tim Lovell-Smith
1
Wypróbowałem już wszystko, o czym wspomniałeś, ale nadal tego nie widzę. Jestem właścicielem repozytorium. Wyszukiwanie w Google hasła „Prześlij i ponownie otwórz GitHub” daje jedno trafienie - tę stronę. Wszelkie dalsze informacje byłyby niezwykle pomocne. Czy Twoja prośba o ściągnięcie została początkowo odrzucona?
Michael Parker
52
Mogę to powielić za pomocą niescalonych żądań ściągnięcia - ale nie o to chodzi w tym wątku.
Dan Tello
2
Tak, odnosi się do zamkniętych ciągów, a nie połączonych ciągów.
loujaybee
4

Po prostu wyprowadź nową gałąź z istniejącej gałęzi, w której wykonałeś dodatkowe 1 zatwierdzenie. Stamtąd prześlij żądanie ściągnięcia.

Siva Gollapalli
źródło
3
Spowodowałoby to nowe żądanie ściągnięcia bez historii oryginału.
Dave,
1
Oto, co ostatecznie zrobiłem. Tak, historia jest mniej liniowa, ale dla mnie jest w porządku.
possen
4

Możesz użyć akcji przywracania:

wprowadź opis obrazu tutaj

Utworzy kolejne żądanie ściągnięcia, cofając wszystkie zmiany wprowadzone w połączonym żądaniu ściągnięcia.

William Weckl
źródło
To nie jest najlepsza praktyka :)
antonbormotov
2
@antonbormotov Czy możesz zaproponować lepsze podejście?
William Weckl,
Załóżmy, że połączyliśmy pr z zatwierdzeniami (mA i mB) do stabilnej gałęzi, którą chcemy przywrócić. Po scaleniu "revert" pr, historia będzie wyglądać jak drzewo zatwierdzeń: XY-mA-mB-CD-rA-rB-EF. Dlaczego chcesz zobaczyć wszystkie te zatwierdzenia w historii, które wprowadzają zmiany (mA, mB), a następnie je anulują (rA, rB)? Lepiej byłoby zmienić bazę i usunąć te „złe” zatwierdzenia mA i mB ze stabilnej gałęzi i zachować czystość historii. Oczywiście ma to sens, jeśli scalenie nastąpiło stosunkowo niedawno.
antonbormotov
1
Nie tylko historia będzie wyglądać brzydko, ale także nie będzie można już po prostu scalać cofniętych zatwierdzeń z powrotem, gdy będziesz gotowy.
Michael,
Miałem nieco podobny scenariusz z niewielką różnicą. Miałem PR, który musiałem przejrzeć i miałem czekać na połączenie innego PR. Ale nie widziałem tego i przedwcześnie połączyłem ten PR. Zrobiłem to, co zasugerował @WilliamWeckl. Ale teraz chcę utworzyć ten sam PR z tymi samymi zmianami, które zostały utworzone pierwotnie. Ale kiedy tworzę PR, gałąź główna nie pokazuje żadnej różnicy, chociaż kiedy widzę pojedyncze pliki, są różne. jakieś pomysły?
Vikas