Git - pozbywamy się mastera
Bezpieczne słowo to main
Created Sep 16, 2022 - Last updated: Oct 26, 2022
Założenia:
- korzystam z Git w linii poleceń
Lepiej zapobiegać, niż leczyć
git config --global init.defaultBranch main
I już. Wszystkie nowe repo będą startowały z główną gałęzią main.
Pod warunkiem, że korzystamy z git > 2.28. Czyli Debian 10 jeszcze nie ale Debian 11 już tak.
Trzeba na serwerze zmienić zawartość pliku HEAD ręcznie, jak to jest opisane niżej.
Przemianowanie głównej gałęzi
Zmiana nazwy gałęzi i wysłanie jej na serwer:
git branch -m master main
git push -u origin HEAD
Skasowanie teraz mastera nie jest możliwe, bo na niego pokazuje HEAD. W Githubie i podobnych serwisach daje się kliknąć, że teraz główną gałęzią ma być main. Mając własny serwer, trzeba zmienić wskazanie HEAD:
git symbolic-ref HEAD refs/heads/main
Teraz da się usunąć mastera, bo HEAD już na niego nie pokazuje:
git push origin --delete master
Może się zdarzyć, że pojawi się zepsuta referencja refs/remotes/origin/HEAD, o czym zobaczymy komunikat wywołując:
git branch -a
Na liście zabraknie remotes/origin/HEAD -> origin/main a wtedy trzeba to naprawić:
git remote set-head origin main
Chyba taki sam efekt jak powyższa komenda daje również to:
git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/main
Po powyższym kroku lista branchy powinna pokazywać, że HEAD kieruje na origin/main
Może się okazać, że gałąź w upstream nie pasuje do gałęzi lokalnej, co widać oglądając listę gałęzi. Trzeba je wtedy rozpiąć i spiąć poprawnie:
git branch --unset-upstream
git push --set-upstream origin main