В книге Pro Git сказано
«Происхождение» не особенное
Точно так же, как имя ветки «master» не имеет особого значения в Git, как и «origin». В то время как «master» является именем по умолчанию для начальной ветки при запуске git init, что является единственной причиной его широкого использования , «origin» - это имя по умолчанию для удаленного устройства при запуске git clone. Если вместо этого вы запустите git clone -o booyah, тогда у вас будет booyah / master в качестве удаленной ветки по умолчанию.
Это означает, что мы можем использовать имя нашей ветки по умолчанию как main или main-branch или что-то в этом роде. Я не видел ни одной опции, man git-init
которая инициализирует меня repo
с другим именем ветки по умолчанию.
GitHub показывает, как установить имя ветки по умолчанию на странице настроек. Но я не говорю о том, как установить его на каком-то конкретном хостинге Git . Я строго спрашиваю только в отношении Git, а не в отношении какого-либо конкретного хостинга Git .
Есть способ сделать это?
источник
Ответы:
Более новый Git, новое репо
Начиная с версии git 2.28.0,
git init
команда теперь принимает--initial-branch
(или-b
для краткости) параметр. Эти две команды создают новое репозиторий Git с веткой под названием «trunk», что всегда имело для меня больше смысла, чем «master» (мастер чего?):Это можно настроить с помощью
init.defaultBranch
параметра. Если я хочу, чтобы все новые репозитории имели ветку по умолчанию "trunk":Старый Git, новое репо
В некоторых системах все еще используются более старые установки Git. Мой сервер Debian 10 (Buster, текущая стабильная версия по состоянию на октябрь 2020 года) поставляется с Git 2.20, который не поддерживает эту
-b
опцию. Один из вариантов - создать репозиторий, а затем изменить имя ветки. Этот метод работает для обычных (не голых) репозиториев:Это создает новый репозиторий с
trunk
текущей веткой вместоmaster
. Ветвь наmaster
самом деле не существует - ветки не создаются, пока в них не будет хотя бы одного коммита. Пока ветка не будет создана, ветка существует только в.git/HEAD
, что объясняет, почемуmaster
ветка исчезнет, когда вы переключитесь наtrunk
.Голые репо
Для голых репозиториев вы не можете работать
git checkout
(вот что значит быть голым). Вместо этого вы можете изменить HEAD, чтобы он указывал на другую ветку:Старые репо
Если вы уже сделали это, вы можете запустить
git branch -m
вместо этого:Это переименовывает ветку из
master
в,trunk
когда она была создана.Это действительно кажется немного неуклюжим, поскольку механизм различается в зависимости от того, пуст ли репозиторий, но он работает. Вы также можете подойти к этому как «создание новой ветки и удаление
master
».источник
git checkout -b trunk
. Означает ли это, что с этого момента ветвью по умолчанию будет ствол?Вы можете косвенно настроить
git init
использование другой ветки по умолчанию: текущая ветвь определяетсяHEAD
, что является «просто» текстовым файлом, сообщающим Git, какая ссылка является текущей.Используя
init.templateDir
, вы можете попроситьgit init
использовать другой:и
~/.config/git/template/HEAD
введите одну строку (+ разрыв строки):ref: refs/heads/main
(по умолчанию для веткиmain
).Все содержимое
templateDir
копируется в.git
каталог при создании репозитория; default (здесь/usr/share/git-core/templates
) содержит несколько примеров хуков и других файлов, но вы можете использовать свой новый каталог шаблонов, например, для установки хуков по умолчанию.источник
HEAD
файл в шаблоне по умолчанию, хотя он сообщит вам, что вы «повторно инициализируете» репозиторий, когда вы его фактически создаете.Вы бы использовали Git 2.28 (3 квартал 2020 г.): имя основной ветки в существующих репозиториях и имя по умолчанию, используемое для первой ветки во вновь созданных репозиториях, можно настраивать, чтобы мы могли в конечном итоге отказаться от жестко запрограммированного '
master
'.И напоминание от августа 2020 года с GitHub :
Но вернемся к самому 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)И:
Примечание: commit 489947c о сообщении о фиксации слияния с тех пор был отменен в Git 2.29, см. " Как я могу настроить сообщение git о фиксации слияния? ». Установка остается.
init.defaultBranch
Это влияет на подмодули:
Обратите внимание, что с Git 2.29 (Q4 2020) тесты в
contrib/
скорректированы с учетом недавнего изменения вfmt-merge-msg
.См. Commit b87528c (3 августа 2020 г.) Эмили Шаффер (
nasamuffin
) .(Объединено Junio C Hamano -
gitster
- в коммите 83b8250 , 10 августа 2020 г.)Также:
В 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 г.)И все еще с Git 2.29:
См. Commit 538228e , commit a15ad5d (8 октября 2020 г.) Йоханнес Шинделин (
dscho
) .(Объединено Junio C Hamano -
gitster
- в коммите 62564ba , 8 октября 2020 г.)источник
Начиная с Git 2.28 (выпущенного 27 июля 2020 г.), вводится новый параметр конфигурации
init.defaultBranch
для замены жестко заданного терминаmaster
.По умолчанию остается
master
!Пользователь может изменить значение переменной конфигурации по умолчанию с помощью:
Прочтите главу git doc для получения дополнительных сведений Введение в init.defaultBranch
источник