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