Как я могу создать репозиторий Git с именем ветки по умолчанию, отличным от " master"?
Вы бы использовали Git 2.28 (3 квартал 2020 г.): имя основной ветки в существующих репозиториях и имя по умолчанию, используемое для первой ветки во вновь созданных репозиториях, можно настраивать, чтобы мы могли в конечном итоге отказаться от жестко запрограммированного ' master'.
И напоминание от августа 2020 года с GitHub :
1 октября 2020 г., если вы не изменили ветку по умолчанию для новых репозиториев для вашего пользователя, организации или предприятия, она автоматически изменится с masterнаmain .
Вы можете отказаться от этого изменения в любое время:
- Для пользователей на странице https://github.com/settings/repositories.
- Для владельцев организаций на
https://github.com/organizations/YOUR-ORGANIZATION/settings/repository-defaultsстранице
- Для администраторов предприятия на
https://github.com/enterprises/YOUR-ENTERPRISE/settings/member_privilegesстранице
Это изменение - одно из многих изменений, которые GitHub вносит для поддержки проектов и разработчиков, которые хотят переименовать свою ветку по умолчанию.
Чтобы узнать больше об изменениях, которые мы вносим, см. Github / renaming .
Но вернемся к самому Git: (2.28, 3 квартал 2020 г.) См. Commit 508fd8e (29 июня 2020 г.) byoàn Trần Công Danh ( sgn) .
См. Фиксацию 0068f21 , фиксацию a471214 , фиксацию 0cc1b47 , фиксацию 32ba12d , фиксацию 6069ecc , commit f0a96e8 , commit 4d04658 (24 Jun 2020), and commit 489947c (23 Jun 2020) by Johannes Schindelin ( dscho) .
См. Commit 8747ebb (24 июня 2020 г.) Дон Гудман-Уилсон ( DEGoodmanWilson) .
(Слияние Junio C Hamano - gitster- incommit 11cbda2 , 06 июл 2020)
init: позволяет указать начальное имя ветки для нового репозитория
Подписано: Йоханнес Шинделин
Растет число проектов и компаний, желающих изменить название основной ветки своих репозиториев (см., Например , твит Мислава Марохнича, чтобы узнать об этом подробнее ).
Чтобы изменить это имя ветки для новых репозиториев, в настоящее время единственный способ сделать это автоматически - это скопировать весь каталог шаблонов Git, затем жестко указать желаемое имя ветки по умолчанию в .git/HEADфайл, а затем настроить init.templateDirуказание на эти скопированные файлы шаблонов.
Чтобы сделать этот процесс гораздо менее громоздким, давайте ввести новый вариант: --initial-branch=<branch-name>.
git init --initial-branch=hello myLocalRepo
# or
git config --global init.defaultBranch hello
git init myLocalRepo
И:
init: разрешить установку значения по умолчанию для начального имени ветки через конфигурацию
Помощник: Йоханнес Шинделин.
Помощник: Деррик Столи.
Подпись: Дон Гудман-Уилсон.
Мы только что ввели параметр командной строки, --initial-branch=<branch-name>позволяющий инициализировать новый репозиторий с начальной ветвью, отличной от жестко запрограммированной.
Чтобы позволить пользователям переопределить исходное имя ветки более постоянно (т.е. без необходимости указывать имя вручную для каждого git initвызова), давайте представим init.defaultBranchнастройку конфигурации.
Примечание: commit 489947c о сообщении о фиксации слияния с тех пор был отменен в Git 2.29, см. " Как я могу настроить сообщение git о фиксации слияния? ». Установка остается.
init.defaultBranch
Это влияет на подмодули:
submodule: возврат к HEAD пульта при отсутствии пульта ... ветвь
Помощник: Филипп Блейн
Подпись: Йоханнес Шинделин.
Если remote.<name>.branchне настроено, в git submodule updateнастоящее время возвращается к использованию имени ветки master.
Однако гораздо лучшая идея - использовать пультHEAD : на всех серверах Git, на которых запущены достаточно свежие версии Git, symref HEADуказывает на основную ветку.
Примечание: t7419 демонстрирует, что могут быть варианты использования, которые ожидают git submodule update --remote обновления подмодулей для удаленной masterветки, даже если удаленный HEADуказывает на другую ветку.
Возможно, этот патч делает поведение более интуитивным, но есть небольшая вероятность того, что это может вызвать регрессию в неясных настройках.
Тем не менее, это поведение можно исправить без какого-либо более длительного переходного периода:
- В
git submodule update --remote не совсем обычная.
- Поведение Current Git и при выполнении этой команды прямо в заблуждение, если текущая ветвь удаленного репозитория не является
master (в этом случае предлагаемое поведение соответствует старому поведению).
- Если пользователь сталкивается с регрессом из-за измененного поведения, исправление на самом деле тривиально: установка
submodule.<name>.branchна masterвосстановит старое поведение.
Обратите внимание, что с Git 2.29 (Q4 2020) тесты в contrib/ скорректированы с учетом недавнего изменения в fmt-merge-msg.
См. Commit b87528c (3 августа 2020 г.) Эмили Шаффер ( nasamuffin) .
(Объединено Junio C Hamano - gitster- в коммите 83b8250 , 10 августа 2020 г.)
Revert "contrib:: subtreeнастроить тест на изменение fmt-merge-msg"
Подписано: Эмили Шаффер
Это отменяет фиксацию 508fd8e8baf3e18ee40b2cf0b8899188a8506d07 .
В 6e6029a8 ( fmt-merge-msg: разрешить снова опустить назначение слияния) мы возвращаем поведение, при котором слияния с " master" по умолчанию не включают " into 'master'" в конце сообщения о слиянии. Это тестовое исправление больше не требуется.
Также:
В Git 2.29 (4 квартал 2020 г.) обновите тесты, чтобы исключить masterиз них слово " ".
См. Commit f33f2d3 , commit b6211b8 (26 сентября 2020 г.) и commit 432f5e6 , commit 5a0c32b , commit 659288c (21 сентября 2020 г.) Йоханнес Шинделин ( dscho) .
(Объединено Junio C Hamano - gitster- в коммите 58138d3 , 5 октября 2020 г.)
tests: избегать вариаций masterназвания ветки
Подписано: Йоханнес Шинделин
У этого термина masterбогатая история, которая служит постоянным напоминанием о расовой несправедливости. У проекта Git нет желания увековечивать это, и он уже начал избегать этого.
Набор тестов использует варианты этого имени для веток, отличных от используемой по умолчанию. Помимо t3200, где мы только что рассмотрели это в предыдущем коммите, эти экземпляры могут быть переименованы автоматически, потому что они не требуют никаких изменений вне тестового сценария, поэтому давайте сделаем это.
Увидев, что затронутые ветки имеют очень мало (если вообще что-либо) общего с ветвью по умолчанию, мы решили использовать полностью отдельную схему именования: topic_<number>(этого не может быть, topic-<number>потому что t5515 использует test_oidмеханизм с этим термином, а этот механизм использует переменные оболочки внутри, имена которых не могут содержать тире).
Этот трюк был выполнен с помощью вызова sed (GNU):
$ sed -i 's/master\([a-z0-9]\)/topic_\1/g' t/t*.sh
И все еще с Git 2.29:
См. Commit 538228e , commit a15ad5d (8 октября 2020 г.) Йоханнес Шинделин ( dscho) .
(Объединено Junio C Hamano - gitster- в коммите 62564ba , 8 октября 2020 г.)
t1415: избегать использования в mainкачестве имени ссылки
Подписано: Йоханнес Шинделин
В рамках подготовки к серии патчей, которые изменят откат для init.defaultBranchна main, давайте не будем использовать mainимя ссылки в этом тестовом сценарии.
В противном случае ( мужчина ), который хочет поймать этих рефери, тоже неожиданно поймает .git for-each-ref ... | grep mainrefs/heads/main
Поскольку рассматриваемые ссылки являются локальными для рабочего дерева (т.е. у каждого рабочего дерева есть свое собственное, точно так же HEAD), и поскольку тестовый пример уже использует вторичное рабочее дерево с именем " second", давайте использовать имя "first вместо этого " для этих ссылок.
При этом настройте заголовки тестов, которые говорят о «репо», когда вместо этого они означают «рабочее дерево».