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

Kyle Hayes
źródło
2
Heh, w porządku. Długoterminowa wartość jest wystarczająco wysoka, aby przynajmniej spróbować.
Kyle Hayes,
Możliwy duplikat Jak zmienić nazwę lokalnego oddziału Git?
Vineet Jain
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
1
git branchteraz obsługuje --moveflagę git-scm.com/docs/git-branch#Documentation/git-branch.txt---move
alxndr

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.

Adam Dymitruk
źródło
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
Jeff Ferland
źródło
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.

Christopher Lörken
źródło
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ą.

Aleksander Blomskøld
źródło
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.

Gru
źródło
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!

gahooa
źródło
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 .

zyy
źródło