Zmiana nazwy gałęzi podczas żądania ściągnięcia

106

W serwisie Github możesz wysyłać żądania ściągnięcia, aby dodać funkcje do projektu. Składki muszą znajdować się w oddziale, który, jeśli wniosek zostanie zaakceptowany, zostanie włączony do gałęzi głównej (lub analogicznej) projektu.

Teraz przesłałem żądanie ściągnięcia na Github, a moje składki znajdują się w gałęzi o nazwie patch-1. Mogę zmienić lokalnie nazwę oddziału wg

git branch -m patch-1 newname

iw zasadzie mogę również zmienić jego nazwę na moim rozwidlonym repozytorium na Github, postępując zgodnie z instrukcjami zawartymi w tej odpowiedzi . Odbywa się to w praktyce poprzez usunięcie starej gałęzi, patch-1w moim przypadku, i nadanie jej innej nazwy newname.

Czy można zmienić nazwę gałęzi patch-1w moim rozwidlonym repozytorium na Github, gdy stanowi ona żądanie ściągnięcia? Lub powoduje problemy z zarządzaniem żądaniami ściągnięcia?

Czy istnieje sposób na zmianę nazwy gałęzi w repozytorium rozwidlonym na Github, gdy ta gałąź jest żądaniem ściągnięcia?

Michele
źródło
Tak, możesz to zrobić dzięki funkcji GitHub „Zmień gałąź podstawową”. Sprawdź moją zaktualizowaną odpowiedź 👇
Slobodan Ilic

Odpowiedzi:

121

„Zmiana nazwy” zdalnej gałęzi w git, jak wskazuje podany przez ciebie link, to tak naprawdę po prostu usunięcie gałęzi, a następnie wypchnięcie nowej z tym samym hashem zatwierdzenia, ale nową nazwą. Jeśli masz otwarte żądanie ściągnięcia dla gałęzi patch-1, po usunięciu tej gałęzi żądanie ściągnięcia zostanie zamknięte.

Więc nie, nie możesz zmienić nazwy gałęzi z otwartym żądaniem ściągnięcia bez usuwania gałęzi i usuwania żądania ściągnięcia. Jednak nic nie powstrzymuje Cię przed zrobieniem tego, wypchnięciem nowej gałęzi z nową nazwą i utworzeniem nowego żądania ściągnięcia.

arbylee
źródło
195
jednym z powodów, dla których tego nie robią, jest przegranie dyskusji na temat istniejącego PR.
Johnny Everson
10
Nie rozumiem, dlaczego tak restrykcyjne ograniczenie zmiany nazwy gałęzi źródłowej na PR. Te same irytujące zachowania istnieją w Bitbucket. Innym podejściem byłaby edycja PR i zmiana gałęzi źródłowej na inną gałąź. Ktoś mógłby powiedzieć "jeśli zmienisz gałąź źródłową, to i tak jest to nowy PR". Technicznie tak, ale nic nie stoi na przeszkodzie, aby programiści skonfigurowali oprogramowanie nadrzędne z zupełnie innej gałęzi, a następnie wykonali plik git push -f. PR jest aktualizowany za pomocą całego nowego kodu i nadal jest „tym samym” PR.
L. Holanda
32

Krótka odpowiedź:

Nie

Alternatywne podejście:

  1. Otwórz nowy PR z nową gałęzią (o zmienionej nazwie)
  2. Zamknij stary PR, odwołując się do nowego (np. Zamknięty na rzecz #new_pr_id)
  3. Zmodyfikuj opis nowego PR (np. Zastępuje #old_pr_id)
  4. (opcjonalnie) Napisz komentarz na temat odpowiedniej dyskusji na temat starego PR

Uwaga:

Nazwa zdalnego oddziału (stanowiącego PR) wymagała zmiany, ponieważ system kompilacji potrzebował nazwy oddziału kończącej się identyfikatorem biletu. Jednak PR został otwarty przed oficjalnym utworzeniem biletu (ze specyfikacji) i zawierał cenną dyskusję. Opisane podejście było jedynym sposobem, aby system kompilacji działał, a także nie utracił żadnych informacji (chociaż był dodatkowy krok w śledzeniu go).

Slobodan Ilic
źródło
9
Biorąc pod uwagę, że gałęzie są zwykle usuwane po scaleniu, myślę, że lepiej „tolerować” niedokładność nazwy przez chwilę, niż dodawać narzut nowego PR, który odnosi się do starego PR w celu śledzenia dyskusji historycznej.
Neo
2
Jeśli chodzi o odpowiedź „aktualizuj”: myślę, że intencją PO jest zmiana gałęzi „z”, a nie gałęzi podstawowej. Nie wiem, jak to pomoże.
David Cook
@DavidCook Masz całkowitą rację. Schrzaniłem. Naprawiono odpowiedź. Dziękuję Ci.
Slobodan Ilic
1
@SlobodanIlic czy możesz usunąć następujący nieaktualny komentarz ?, stackoverflow.com/questions/20007578/…
Jaime Hablutzel