Jak zmienić nazwę gałęzi w Git (lokalnie i zdalnie)
Zmiana nazwy gałęzi w Git
Zmiana nazwy gałęzi w Git: lokalnie, zdalnie i domyślna na GitHub | We.Inc
Wygeneruj dokładne komendy do zmiany nazwy gałęzi git lokalnie, wypchnięcia nowej nazwy, usunięcia starej gałęzi zdalnej i naprawy śledzenia upstream, a także do zmiany nazwy main na GitHub.
Aby zmienić nazwę gałęzi, na której jesteś, uruchom git branch -m new-name. Dla innej gałęzi uruchom git branch -m old-name new-name. Git nie potrafi zmienić nazwy gałęzi na zdalnym repozytorium, więc wypchnij nową nazwę przez git push -u origin new-name, a potem usuń starą przez git push origin --delete old-name.
Komendy zmiany nazwy w zależności od sytuacji
Sytuacja
Komenda
Zmień nazwę bieżącej gałęzi
git branch -m new-name
Zmień nazwę innej gałęzi
git branch -m old-name new-name
Nadpisz istniejącą nazwę
git branch -M old-name new-name
Opublikuj nową nazwę i ją śledź
git push -u origin new-name
Usuń starą nazwę ze zdalnego repozytorium
git push origin --delete old-name
Napraw klon po zmianie nazwy przez kogoś innego
git branch -u origin/new-name new-name
Zmiana nazwy lokalnie to jedna komenda; problemy zaczynają się przy zdalnym repozytorium, bo gałęzi zdalnej nie da się przemianować w miejscu, można ją tylko zastąpić. Wpisz poniżej starą i nową nazwę, aby dostać komendy dla swojego przypadku, w tym to, co muszą potem uruchomić członkowie zespołu, oraz dodatkowe kroki, gdy gałąź jest domyślną gałęzią na GitHub.
Wpisz starą nazwę, nową nazwę i zdalne repozytorium, zwykle origin.
Zaznacz, czy jesteś na tej gałęzi i czy istnieje ona już w zdalnym repozytorium.
Uruchom komendy po kolei; kreator dodaje push, usunięcie i naprawę upstream tylko wtedy, gdy są potrzebne.
Wyślij blok dla zespołu każdemu, kto ma klon.
Wypchnij nową nazwę przed usunięciem starej, aby otwarty pull request lub uruchomienie CI nigdy nie zobaczyły, że gałąź całkiem znika.
Na GitHub zmiana nazwy ze strony gałęzi jest lepsza dla współdzielonych gałęzi: przekierowuje otwarte pull requesty i stare adresy URL za Ciebie.
Przeszukaj workflowy CI, ustawienia wdrożeń i skrypty pod kątem starej nazwy. GitHub zaznacza, że workflowy Actions, które się do niej odwołują, nie są aktualizowane.
git branch -m zmienia też nazwę reflogu gałęzi, więc jej lokalna historia przesunięć podąża za nową nazwą.
Najczęściej zadawane pytania
Czy mogę zmienić nazwę gałęzi zdalnej bezpośrednio?
Nie samym gitem. Wypychasz gałąź pod nową nazwą i usuwasz starą. Interfejs webowy GitHub potrafi zmienić nazwę gałęzi na serwerze, co dodatkowo zachowuje działanie pull requestów i linków.
Jaka jest różnica między -m a -M?
-m odmawia, jeśli gałąź o nowej nazwie już istnieje. -M to skrót od --move --force i ją zastępuje. Żadna z opcji nie zmieni nazwy gałęzi, która jest wybrana w innym worktree tego samego repozytorium.
Jak zmienić master na main na GitHub?
W repozytorium na GitHub otwórz Branches, wybierz zmianę nazwy przy master i wpisz main. Zmiana nazwy domyślnej gałęzi wymaga uprawnień administratora. Potem każdy uruchamia cztery komendy, które pokazuje GitHub: zmianę nazwy lokalnie, fetch, ustawienie upstream i aktualizację HEAD dla origin.
Dlaczego git push nadal trafia do starej nazwy gałęzi?
Przemianowana gałąź nadal śledzi stary upstream. Wypchnij raz z -u albo uruchom git branch -u origin/new-name, a kolejne push i pull będą używać nowej nazwy.
Co GitHub aktualizuje, gdy zmieniasz nazwę tam
GitHub przekierowuje adresy URL zawierające starą nazwę, przenosi ochronę gałęzi na nową nazwę i przestawia otwarte pull requesty i robocze wydania oparte na tej gałęzi. Adresy URL surowych plików nie są przekierowywane.
Osoby z uprawnieniami zapisu mogą zmieniać nazwy zwykłych gałęzi; zmiana nazwy domyślnej lub chronionej gałęzi wymaga uprawnień administratora, a zestawy reguł organizacji mogą to jeszcze bardziej zaostrzyć.
Jak unikać nazw, które później sprawiają kłopoty
Trzymaj się małych liter, cyfr, łączników i ukośników do grupowania, na przykład fix/login-timeout. Git odrzuca nazwy ze spacjami, dwiema kropkami z rzędu, kropką lub ukośnikiem na końcu, łącznikiem na początku albo dowolnym ze znaków ~ ^ : ? * [ i ukośnikiem wstecznym.
Pełna zmiana nazwy od początku do końca
Zmień nazwę wypchniętej gałęzi wszędzie
Zmienia nazwę lokalnie, publikuje nową nazwę ze śledzeniem, a potem usuwa starą gałąź zdalną.
Co uruchamiają członkowie zespołu po zmianie nazwy na GitHub
To kroki, które GitHub podaje do aktualizacji istniejącego klonu, z opcjonalnym usunięciem nieaktualnych gałęzi zdalnych.
Kreator komend zmiany nazwy
Obecna nazwa gałęzi
Nowa nazwa gałęzi
Zdalne repozytorium
Jestem teraz na tej gałęzi
Gałąź istnieje w zdalnym repozytorium
Twoje komendy
Członkowie zespołu uruchamiają
Nie trzeba nic mówić zespołowi: gałąź nigdy nie została wypchnięta.
To nie jest prawidłowa nazwa gałęzi. Zobacz zasady nazewnictwa niżej na stronie.