Jak zmienić nazwę gałęzi „master” w Git na „wydanie”?


116

Chcielibyśmy wymusić nową politykę dla naszych projektów, zgodnie z którą gałąź główna będzie teraz nazywana gałęzią wydania, aby upewnić się, że jest bardziej jasne, w jaki sposób powinna być używana. Oczywiście będziemy mieć również rozwijanie i wydawanie gałęzi kandydatów.

Rozumiem, że mogę lokalnie zmienić nazwę gałęzi głównej, używając po prostu następujących poleceń:

git branch -m master release

Jednak dzieje się tak tylko lokalnie. Nawet jeśli popchnę to do pilota, HEAD nadal wskazuje na zdalną gałąź master. Chcę całkowicie pozbyć się gałęzi głównej i uczynić domyślną gałąź lokalną przy pierwszym klonowaniu.

Jak mogę to osiągnąć?

Wygląda na to, że ponieważ źródło znajduje się na serwerze Gitorious , otrzymuję błędy podczas usuwania gałęzi głównej. Próbuję teraz sprawdzić, czy można to zmienić, tak aby domyślną gałęzią było „wydanie”.


2
Heh, w porządku. Długoterminowa wartość jest wystarczająco wysoka, aby przynajmniej spróbować.
Kyle Hayes,


Jakiś (zdalny) serwer odmawia usunięcia "domyślnej" gałęzi (tak jest w przypadku Github). Więc być może będziesz musiał przejść na serwer, aby wybrać inną "domyślną" gałąź na czas operacji ... Na Github można to zrobić w widoku "gałęzi".
jehon

Odpowiedzi:


141
git checkout -b release master    # Create and switch to the release branch
git push -u origin release        # Push the release branch to the remote and track it
git branch -d master              # Delete local master
git push --delete origin master   # Delete remote master
git remote prune origin           # Delete the remote tracking branch

Pamiętaj, że jeśli korzystasz z GitHub , musisz najpierw zmienić swoją „domyślną” gałąź na GitHub po kroku 3:

W swoim repozytorium na github.com przejdź do UstawieniaOddziałyDomyślna gałąź . Zmień go, aby zwolnić, a następnie wykonaj pozostałe kroki.


3
Kiedy próbuję git push --delete, pojawia się następujący błąd: usunięcie bieżącej gałęzi zabronione
Kyle Hayes

8
Używasz githuba lub czegoś podobnego, musisz ustawić domyślną gałąź na coś innego: matthew-brett.github.com/pydagogue/gh_delete_master.html lub po prostu zostawić tam mastera i zignorować.
Adam Dymitruk

Tak, mamy gigantyczną instancję. Zobaczę, czy to jest opcja.
Kyle Hayes,

Wygląda na to, że gigantyczne `` haki na commit zabraniają usunięcia gałęzi master - bez żadnego powodu, który widzę: /
fge

1
To samo ! [remote rejected] branch (deletion of the current branch prohibited) stanie się z Bitbucket. Przełącz „Repozytorium główne” na ekranie ustawień (pod ikoną koła zębatego).
dnfehren

13

Sprawdź swoją główną gałąź

git checkout master

Utwórz gałąź wydania i przełącz się na nią:

git branch release
git checkout release

Prześlij to na serwer

git push origin release

Usuń odniesienie do gałęzi głównej na serwerze

git push origin :master

Usuń lokalną gałąź główną

git branch -d master

2
Po tych krokach mogę stwierdzić, że napotkam ten sam błąd, o którym wspomniałem powyżej.
Kyle Hayes,

@KyleHayes To problem z konfiguracją serwera. Chociaż tak jest domyślnie, proces zmiany powinien być widoczny dla użytkownika lub łatwy do znalezienia w Stackoverflow
Jeff Ferland

Musisz przełączyć się na inny oddział, zanim będziesz mógł usunąć oddział.
martinedwards

5

Uwaga: ta odpowiedź jest przeznaczona dla samoobsługowych serwerów Git, na których masz dostęp z wiersza poleceń.

Ponieważ próba usunięcia remote masterz klienta rzeczywiście jest niedozwolona i zakładam, że zakazywanie denyDeleteCurrentma sens, nie chciałbym zmieniać tego ustawienia.

Jednak odkryłem, że najłatwiejszym sposobem zmiany nazwy swojego mastera, jeśli masz dostęp z wiersza poleceń do zdalnego serwera, jest uruchomienie polecenia zmiany nazwy bezpośrednio na zdalnym.

To zadziałało dla mnie:

  1. Zaloguj się przez SSH do zdalnego serwera git
  2. Przejdź do folderu xxx.git swojego projektu
  3. biegać: git branch -m master release

Teraz repozytorium zdalne używa releasejako domyślnej gałęzi, a każde git clonew tym repozytorium z dowolnego klienta domyślnie pobierze gałąź wydania.

Jest to bardzo pomocne również po skonfigurowaniu czystego repozytorium, aby skonfigurować je do swoich potrzeb.


3

Jak wcześniej stwierdzili inni, problemem jest tutaj Gitorious, który domyślnie nie pozwala na usunięcie gałęzi HEAD. Masz dwie możliwości obejścia tego problemu. Jednym z nich jest zalogowanie się na serwer Gitorious (za pomocą ssh), znalezienie repozytorium Git na serwerze plików i dodanie:

[receive]
        denyDeleteCurrent = warn

do konfiguracji.

Łatwiejszą opcją jest po prostu zmiana domyślnej gałęzi. Przejdź do repozytorium w interfejsie internetowym Gitorious, naciśnij „Edytuj repozytorium” i ustaw „Head Zmień symboliczne odniesienie HEAD w repozytorium Git wskazuje na:”. Po wykonaniu tej czynności możesz usunąć gałąź główną.


2

Jeśli napotkasz ten problem z GitHub , wykonaj kroki aż do usunięcia gałęzi na zdalnym. Nie pozwoli ci na to. Następnie zaloguj się do interfejsu WWW i przejdź do repozytorium UstawieniaOddziałyDomyślna gałąź . Zmień go na nową gałąź i wykonaj pozostałe kroki.


1

W idealnym przypadku chcesz skonfigurować śledzenie, więc zrób to:

git push origin HEAD:release
git checkout --track origin/release

Czy teraz chcesz usunąć pozostałe?

git branch -d master
git push origin :master

Prosty!


Otrzymałem ten sam błąd, co ten, który zamieściłem w komentarzu @ Adama, kiedy dotarłem do polecenia git push origin: master.
Kyle Hayes,

0

Ponieważ skończyłeś ze zmienianiem nazw gałęzi, ustaw HEAD releasena zdalny

git remote set-head origin release

Następnie, aby usunąć masteroddział w trybie zdalnym, musiałbyś być administratorem, przynajmniej na GitHubie. Więcej informacji można znaleźć w tym poście .

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.