Estou tentando descobrir como git init
usar um nome de ramificação padrão diferente master
do primeiro commit, mas não consigo encontrar uma configuração git para ele ou qualquer coisa que me permita fazer isso (por exemplo, aliases funcionam apenas para comandos, não nomes de branch).
Existe alguma maneira de alterar o nome padrão da primeira ramificação que git init
configura?
A partir do Git 2.28 (lançado em 27 de julho de 2020), agora você pode configurar o nome da ramificação criada ao iniciar um novo repositório :
Depois de definir esta variável, a execução
git init
produzirá um repositório cuja ramificação inicial émain
:Notas de lançamento: https://lore.kernel.org/git/[email protected]/
Nas versões do Git anteriores a 2.28,
HEAD
é codificado para apontar pararefs/heads/master
.Portanto, não há nenhuma configuração ou opção que você possa passar
git init
para alterá-la para outra coisa.O que é possível, porém, é alterar o que
HEAD
aponta para logo depoisgit init
com a ajuda degit symbolic-ref
:Isso mudará
HEAD
para apontar para uma ramificação (ainda não existente) chamadatest
. Então, quando você criar seu primeiro commit, o branch será chamadotest
em vez demaster
.Uma maneira simples de alterar o HEAD padrão é criar um HEAD no diretório do modelo git. Primeiro, configure seu diretório de modelo para
~/Templates/git.git
(ou o que você preferir):Em seguida, crie o arquivo
HEAD
no diretório do modelo:E você está pronto para ir! Sempre que você executar
git init
, receberá a mensagem:Por algum motivo, o git decide se deve usar esta mensagem com base na presença do
HEAD
arquivo em.git
, em vez de depender se deve ou não.git
ser criado. No entanto, realmente não importa qual mensagem ele mostra. Na página de manual do git-init:Ou seja,
git init
é garantido que não sobrescreverá oHEAD
que você colocou no modelo e também não usará o modeloHEAD
para sobrescrever um existenteHEAD
. Como isso está explicitamente documentado, você pode confiar nele.Além disso, também diz:
O que significa que você também pode confiar que o modelo será copiado imediatamente após a criação de
.git
, e não posteriormente.(Claro, esta é minha interpretação pessoal do manual. É totalmente possível que os desenvolvedores do git discordem.)
Uma maneira de definir sua ramificação padrão é editar seu
~/.gitconfig
arquivo. Adicione as seguintes linhas:Agora, quando você executar
git init
,main
será sua ramificação padrão. Isso é semelhante à corridagit config --global init.defaultBranch main
mencionada por @t-kiley.Como mencionado, o HEAD é codificado para apontar para o mestre. No entanto, você pode criar um alias de shell, para fazer
git init
o que quiser. Se você estiver usando bash como seu shell, coloque algo assim em seu .bashrc:Isso substituirá o comando
git
por uma função. Essa função fará com que o comando sejagit
executado exatamente da mesma forma, a menos que você esteja chamandogit init
sem nenhum outro argumento. Quando você chamágit init
-lo, ele iniciará o repositório. Em seguida, ele verificará se o ramo "daddy" já existe. Em caso afirmativo, ele verificará esse branch, caso contrário, ele criará o branch e moverá você para ele.A maioria das respostas para este tópico funciona para algumas versões do git, mas nenhuma resposta funcionou para todas as versões com as quais estou trabalhando (versões git2.7
e )2.25
.2.30
Mas, graças a todas as suas respostas, consegui misturar suas ideias compartilhadas e finalmente encontrei uma maneira de oferecer suporte a todas as versões com uma configuração:[ Editar: Acontece que minha observação estava errada. Não funcionou, por causa da minha configuração especial.
Se você tiver problemas com as soluções acima, aqui está outra abordagem (testada para versões git e
2.7
) .]2.25
2.30
init.defaultBranch
combinado com uma função wrapper (apenas para versões git, que não suportam init.defaultBranch, que é consultado uma vez, no início da sessão).A função empacotada emite um git checkout para o branch padrão configurado, diretamente após um init.
.gitconfig
pseudônimos de bash
Eu encontrei esta pergunta através da pesquisa. Percebo que estou respondendo a uma pergunta antiga, mas para outras pessoas que podem chegar aqui, o GitHub tem uma página sobre como configurar o nome do branch primário para qualquer repositório criado lá, bem como instruções para alterar o nome do branch primário:
Renomeando a ramificação padrão de mestre