Por que o "git branch" está silencioso em novos repositórios?

Quando você cria um novo repositório e executa o git branch , ele sai silenciosamente. Por exemplo:

$ mkdir /tmp/foo; cd /tmp/foo; git init
Initialized empty Git repository in /tmp/foo/.git/

$ git branch

Por que o comando não fornece nenhuma saída ou mostra o ramo mestre?

2
adicionado editado
Visualizações: 1

3 Respostas

TL; DR

Ainda não existem cabeças de ramificação.

Explicação detalhada

Um repositório Git não possui ramificações até você fazer seu primeiro commit. Um repositório recém-inicializado define HEAD como refs/heads/master, mas refs/heads/master não existirá ou conterá um ponteiro de confirmação até que o primeiro commit seja feito.

Durante um commit, o Git desreferencia o HEAD simbólico-ref para encontrar o head do branch atual, e então atualiza aquele head com o hash de commit fornecido pelo git-commit-tree.

O resultado final é que git branch não tem nada para reportar em um novo repositório. Sem cabeças de ramificação presentes, ele simplesmente termina silenciosamente com um status de saída de zero.

Veja também

  • git-branch (1)
  • git-commit-tree (1)
  • git-symbolic-ref (1).
  • git-update-ref (1)
  • gitcore-tutorial (7)
8
adicionado
Boa explicação sobre o que está acontecendo nas costas. Isso ajudará os usuários a entender como o git funciona.
adicionado o autor Ikke, fonte

Observe que um ramo é simplesmente um ponteiro para um commit.
Já que um repositório vazio (com sua árvore vazia ) não tem commit, você não tem branch .

Um primeiro commit criará uma ramificação chamada ' master ', porque HEAD faz referência a refs/heads/master . Se você quiser criar um primeiro commit em uma ramificação diferente (do que master ), você precisa alterar a referência simbólica de HEAD primeiro (como detalhado em este tópico ):

git symbolic-ref HEAD refs/heads/non-master 

E então faça seu primeiro commit.

2
adicionado

Sim, primeiro você precisa executar

$ git add .
$ git commit -m 'first commit'

comandos.

0
adicionado