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?


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.


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).


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.