Diferença entre cabeça e mestre

Qual é a diferença entre o {[[0]} e master no Git?

Fiz um clone de um projecto sobre o GitHub e quero introduzir as minhas alterações no comando. Mas para qual devo empurrar?

screenshot

Author: Boann, 2010-12-08

3 answers

master é uma referência ao fim de um ramo. Por convenção (e por padrão) este é geralmente o principal ramo de integração, mas não tem que ser.

HEAD é, na verdade, um tipo especial de referência que aponta para outra referência. Pode apontar para master ou não pode {[[12]} (irá apontar para qualquer ramo que esteja actualmente a ser verificado). Se você sabe que quer se comprometer com o ramo master, então empurre para isto.

Aqui está um visual. exemplo:

alt text

No seu próprio repositório, poderá verificar para onde o HEAD aponta, executando isto:

$ git symbolic-ref HEAD
refs/heads/master
No entanto, descobrir para onde o remotes/origin/HEAD aponta é mais complicado porque está na máquina remota. Há um grande pequeno tutorial sobre referências do git aqui:

Http://people.gnome.org/~federico/news-2008-11.html#pushing-and-pulling-with-git-1

 165
Author: Lee Netherton, 2015-06-29 10:50:35

A resposta simples é que HEAD é um ponteiro / etiqueta para o commit mais recente do ramo em que está actualmente. master é o ramo por omissão criado quando inicializou um repositório git (por exemplo git init).

Pode apagar o ramo master (por exemplo git branch -D master). Não pode apagar o indicador HEAD.

 38
Author: benhorgen, 2015-09-24 15:24:57

Basta empurrar as alterações do seu ramo actual

git push origin

E irá empurrar o seu ramo' B 'Para' origin/B'.
Se estiver no seu ramo master, O git irá empurrar para origin/master.
Na verdade, irá empurrar todas as alterações nos ramos locais que têm ramificações remotas correspondentes em origin. É controlado pela configuração de configuraçãoforça.predefinição.
Ver também empurrar as especificações no Livro de Pro Git .


O que estás a ver é o barra lateral representando todos os aspectos do seu repo remoto no garfo Experimental do gitx do projecto do gitx.

alt text

O {[6] } irá designar o ramo por omissão para esse remoto.
Veja git remote set-head man page:

Não é necessário ter um ramo predefinido para um remoto, mas permite que o nome do remoto seja especificado em vez de um ramo específico.
Por exemplo, se o ramo padrão para origin for definido como master, então origin pode ser especificado onde você normalmente especificar origin/master.

 8
Author: VonC, 2017-05-23 12:09:52