• Czas czytania ~3 min
  • 13.10.2023

Przez długi czas domyślna gałąź w większości repozytoriów Git nosiła nazwę "master". Na szczęście wiele osób zdało sobie sprawę, że ta terminologia (jeszcze bardziej widoczna w "pan/niewolnik") powinna zostać zastąpiona! Branża technologiczna powinna przejść do bardziej inkluzywnej, otwartej kultury - a usunięcie języka takiego jak "pan / niewolnik" jest ważnym krokiem w tej podróży.

W publicznej dyskusji pojawiło się kilka różnych alternatyw dla "mistrza", z których "domyślny" i "podstawowy" to niektóre z nich. Ale najpopularniejszym terminem wydaje się być "główny".

Ten krótki artykuł pomoże Ci zmienić nazwę "master" w repozytoriach Git na "main" (lub dowolny inny termin wybrany przez Twój zespół).

Git Cheat Sheet Nie musisz pamiętać wszystkich tych poleceń i parametrów: pobierz naszą popularną "Git Cheat Sheet

" - za darmo!

Zmiana nazwy lokalnej gałęzi głównej na główną

Pierwszym krokiem jest zmiana nazwy gałęzi "master" w lokalnych repozytoriach Git:

$ git branch -m master main

Szybko sprawdźmy, czy to zadziałało zgodnie z oczekiwaniami:

$ git status
On branch main
Your branch is up to date with 'origin/master'.
nothing to commit, working tree clean

Jak dotąd, tak dobrze! Nazwa gałęzi lokalnej została zmieniona - ale teraz musimy również wprowadzić pewne zmiany w zdalnym repozytorium!

Zmiana nazwy gałęzi Remote master

W drugim kroku będziemy musieli utworzyć nową gałąź na zdalnym o nazwie "main" - ponieważ Git nie pozwala po prostu "zmienić nazwy" zdalnej gałęzi. Zamiast tego będziemy musieli utworzyć nową gałąź "główną", a następnie usunąć starą gałąź

"główną".Upewnij się, że bieżąca lokalna gałąź HEAD jest nadal "main" podczas wykonywania następującego polecenia:

$ git push -u origin main

Mamy teraz nową gałąź na zdale o nazwie "main". Kontynuujmy i usuńmy starą gałąź "główną" na pilocie:

$ git push origin --delete master

W zależności od dokładnej konfiguracji mogło to zadziałać i zmiana nazwy się powiedzie. Jednak w wielu przypadkach zobaczysz komunikat o błędzie podobny do następującego:

To https://github.com/gittower/git-crashcourse.git
! [remote rejected]   master (refusing to delete the current branch: refs/heads/master)
error: failed to push some refs to 'https://[email protected]/gittower/git-crashcourse.git'

GitHub, podobnie jak inne platformy hostingu kodu, również oczekuje, że zdefiniujesz "domyślną" gałąź - a usunięcie tego nie jest dozwolone. Ponadto twój stary "master" może być ustawiony jako "protected". Musisz rozwiązać ten problem, zanim będziesz mógł kontynuować. Oto jak to zrobić w GitHub:Jeśli spróbujesz ponownie, usunięcie "master" ze zdalnego repozytorium powinno zakończyć się powodzeniem:

$ git push origin --delete master
To https://github.com/gittower/git-crashcourse.git
 - [deleted]           master
Porada

Zmiana nazwy "master" na "main" w wieży

Jeśli używasz klienta Tower Git, możesz bardzo łatwo zmienić nazwy gałęzi:

Po utworzeniu nowej gałęzi "głównej" na pilocie zdalnym może być konieczna (w zależności od platformy hostingowej Git) zmiana gałęzi "domyślnej" lub usunięcie statusu "protected" dla "master". Następnie będziesz mógł usunąć starą gałąź "główną" na pilocie.

Co muszą zrobić

Twoi koledzy z drużynyJeśli inne osoby w twoim zespole mają lokalne klony repozytorium, będą również musiały wykonać kilka kroków po ich stronie:Jeśli używasz klienta Tower Git, twoi koledzy mogą po prostu zmienić nazwę swojej lokalnej gałęzi "master", a następnie zmienić połączenie śledzenia w menu kontekstowym:

# Switch to the "master" branch:
$ git checkout master
# Rename it to "main":
$ git branch -m master main
# Get the latest commits (and branches!) from the remote:
$ git fetch
# Remove the existing tracking connection with "origin/master":
$ git branch --unset-upstream
# Create a new tracking connection with the new "origin/main" branch:
$ git branch -u origin/main

Rzeczy, o których należy pamiętać

Jak widziałeś, Proces zmiany nazwy "master" na "main" nie jest strasznie skomplikowany.

Należy jednak pamiętać o łańcuchu narzędzi: jeśli używasz narzędzia ciągłej integracji/ciągłego wdrażania, potoków GitHub Actions, Azure DevOps / Atlassian Bamboo / GitLab CI lub czegoś podobnego, należy dokładnie sprawdzić te narzędzia. Jeśli zależą one od konkretnej gałęzi "origin/master", może być konieczna zmiana ich ustawień.

Dowiedz się więcej

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

O

Professional Fullstack Developer with extensive experience in website and desktop application development. Proficient in a wide range of tools and technologies, including Bootstrap, Tailwind, HTML5, CSS3, PUG, JavaScript, Alpine.js, jQuery, PHP, MODX, and Node.js. Skilled in website development using Symfony, MODX, and Laravel. Experience: Contributed to the development and translation of MODX3 i...

O autorze CrazyBoy49z
WORK EXPERIENCE
Kontakt
Ukraine, Lutsk
+380979856297