GitHub: от master к main — почему и как?

С 1 октября 2020 года GitHub изменил политику наименования ветки по умолчанию при создании нового репозитория. Теперь вместо master используется main. Рассмотрим причины этого решения, его преимущества и недостатки.

Причины изменения

Переименование дефолтной ветки с master на main было вызвано протестами Black Lives Matter после смерти Джорджа Флойда. Многие технологические компании, стремясь продемонстрировать поддержку чернокожему сообществу, отказались от неинклюзивных терминов, таких как master, slave, blacklist и whitelist. GitHub стал одной из первых компаний, внедривших эти изменения.

Влияние на работу с Git

На момент написания статьи Git не изменил политику наименования веток. Дефолтная ветка в Git по-прежнему называется master. Это может создавать проблемы при интеграции локального репозитория с удаленным.

Практическое применение: создание и подключение репозитория

При создании нового репозитория на GitHub с файлом README.md, дефолтная ветка автоматически устанавливается как main. Возможно создание дополнительных веток, например, master. Настройки дефолтной ветки изменяются в разделе «Settings» -> «Branches».

Для подключения локального репозитория, созданного с помощью git init (где дефолтная ветка — master), к новому удаленному репозиторию на GitHub, потребуется:

  • Добавить удаленный репозиторий: git remote add origin <ссылка_на_удаленный_репозиторий>
  • Переименовать локальную ветку: git branch -M main
  • Отправить изменения на удаленный репозиторий: git push -u origin main

Для сохранения master как дефолтной ветки при подключении, используйте команду git push -u origin master. Это отправит локальную ветку master на удаленный репозиторий и установит её как отслеживаемую.

Настройка дефолтной ветки и CI/CD

Настройки дефолтной ветки важны, поскольку многие проекты используют CI/CD (Continuous Integration/Continuous Development), обычно привязанные к именам веток, таким как master или release. Изменение этих настроек может потребовать значительных усилий.

Переход GitHub на main как дефолтную ветку обусловлен стремлением к инклюзивности. Хотя Git пока не изменил свою политику, это изменение несложно обойти, следуя описанным рекомендациям. Выбор между master и main остаётся за разработчиком. GitHub обещал плавный переход до конца 2020 года, автоматически корректируя настройки веток и открытые Pull Requests.

Что будем искать? Например,программа