• Время чтения ~1 мин
  • 13.10.2023

Долгое время ветка по умолчанию в большинстве репозиториев Git называлась "master". К счастью, многие люди осознали, что эта терминология (еще более очевидная в «хозяине/ведомом») должна быть заменена! Технологическая индустрия должна перейти к более инклюзивной, открытой культуре, и отказ от таких формулировок, как «хозяин/раб», является важным шагом на этом пути.

В публичном обсуждении всплыло несколько различных альтернатив для «мастера», некоторые из которых — «по умолчанию» и «первичный». Но самым популярным термином, кажется, является «основной».

Эта короткая статья поможет вам переименовать слово "master" в ваших собственных репозиториях Git в "main" (или любой другой термин, выбранный вашей командой).

Шпаргалка по Git Не нужно запоминать все эти команды и параметры: получите нашу популярную "Шпаргалку

по Git" - бесплатно!

Переименование локальной ветки master в main

Первым шагом является переименование ветки "master" в ваших локальных репозиториях Git:Давайте быстро проверим, сработало ли это так, как ожидалось:

$ git branch -m master main

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

Пока все хорошо! Локальная ветка была переименована - но теперь нам нужно внести некоторые изменения и в удаленный репозиторий!

Переименование

ветки Remote master На втором шаге нам нужно создать новую ветку на удаленном репозитории с именем "main" - потому что Git не позволяет просто "переименовать" удаленную ветку. Вместо этого нам нужно создать новую ветку "main", а затем удалить старую ветку "master".

Убедитесь, что ваша текущая локальная ветвь HEAD по-прежнему "main" при выполнении следующей команды:

$ git push -u origin main

Теперь у нас есть новая ветка на удаленном репозитории с именем "main". Давайте продолжим и удалим старую ветку "master" на удаленном репозитории:

$ git push origin --delete master

В зависимости от вашей точной настройки, это могло сработать, и переименование прошло успешно. Во многих случаях, однако, вы увидите сообщение об ошибке, подобное следующему:

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, как и другие платформы хостинга кода, также ожидает, что вы определите ветку "по умолчанию" - и ее удаление не допускается. Кроме того, ваш старый "master" может быть установлен как "protected". Вам нужно будет решить эту проблему, прежде чем вы сможете продолжить. Вот как это сделать в GitHub:Если вы попробуете еще раз, удаление "master" из удаленного репозитория должно быть успешным:

$ git push origin --delete master
To https://github.com/gittower/git-crashcourse.git
 - [deleted]           master
Совет

Переименование "master" в "main" в Tower

В случае, если вы используете Git-клиент Tower, вы можете очень легко переименовать ветки:

После создания новой "главной" ветки на удаленном сервере вам, возможно, придется (в зависимости от вашей платформы хостинга Git) изменить ветку "по умолчанию" или удалить любой статус "protected" для "master". После этого вы сможете удалить старую ветку "master" на удаленном репозитории.

Что должны делать

ваши товарищи по командеЕсли у других людей в вашей команде есть локальные клоны репозитория, им также придется выполнить некоторые действия на своей стороне:В случае, если вы используете Git-клиент Tower, ваши коллеги могут просто переименовать свою локальную ветку "master", а затем изменить отслеживание соединения в контекстном меню:

# 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

Что нужно иметь в виду

Как вы видели, Процесс переименования "master" в "main" не очень сложен.

Однако следует помнить о своем наборе инструментов: если вы используете инструмент CI/CD, GitHub Actions, конвейеры Azure DevOps / Atlassian Bamboo / GitLab CI или что-то подобное, вам следует тщательно проверить эти инструменты. Если они зависят от конкретной ветки "origin/master", вам, возможно, придется изменить их настройки.

Подробнее

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

Про мене

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

Об авторе CrazyBoy49z
WORK EXPERIENCE
Контакты
Ukraine, Lutsk
+380979856297