Por que é "origem / HEAD" mostrado ao executar "-r git branch"?

votos
131

Quando você executar git branch -rporque as chamas que isso listar origin/HEAD? Por exemplo, há um repo remoto no GitHub, digamos, com dois ramos: mestre e incrível de recursos. Se eu faço git clonepara agarrá-lo e depois ir para o meu novo diretório e listar os ramos, eu vejo isso:

$ git branch -r
origin/HEAD
origin/master
origin/awesome-feature

Ou qualquer ordem que estaria em (alfa? Eu estou fingindo este exemplo para manter a identidade de um segredo repo inocente). Então qual é o HEADnegócio? É o que a última pessoa a pushteve sua HEADpontas em quando empurrado? Não será que sempre que quer que fosse que eles pushed? HEADs se mover ... porque eu me importo o que alguém está HEADapontada para em outra máquina?

Eu estou apenas começando uma alça sobre monitoramento remoto e tal, então esta é uma confusão persistente. Obrigado!

EDIT: Eu estava sob a impressão de que dedicou repos remotos (como GitHub, onde ninguém vai ssh e trabalhar nesse código, mas apenas puxar ou empurrar, etc) não e não deve ter uma cabeça porque não havia, basicamente, nenhuma cópia de trabalho. Não tão?

Publicado 09/12/2008 em 22:36
fonte usuário
Em outras línguas...                            


7 respostas

votos
113

@robinst está correto.

Em git, você pode selecionar qual ramo está marcada por padrão (ou seja, quando você clonar). Por padrão, origin/HEADirá apontar para isso.

No GitHub, você pode alterar esse nas configurações de administrador para a sua repo GitHub. Você também pode fazê-lo a partir da linha de comando via

git remote set-head origin trunk

ou eliminá-lo completamente via

git remote set-head origin -d

Exemplo . Olhe para os 'switch Ramos' drop-down. trunkestá marcada, então origin/HEADsegue trunk.

Respondeu 27/07/2011 em 03:14
fonte usuário

votos
50

A razão de um repositório nua pode ter uma cabeça, é que porque determina qual ramo é inicialmente check-out após um clone do repositório.

Normalmente, HEAD aponta para dominar, e que é o ramo que é verificada quando as pessoas clonar o repositório. Defini-lo para outro ramo (editando cabeça na repositório descalços) resulta em que ramo a ser check-out no clone.

Respondeu 21/05/2010 em 16:08
fonte usuário

votos
22

Fiquei com a impressão de que dedicou repos remotos (como GitHub, onde ninguém vai ssh e trabalhar nesse código, mas apenas puxar ou empurrar, etc) não e não deve ter uma cabeça porque não havia, basicamente, nenhum trabalho cópia de. Não tão?

Eu tinha exatamente a mesma impressão como você disse.

E eu ainda não pode excluir esse ramo origem / HEAD remoto de rastreamento clonado a partir github fazendo

git branch -d -r origin/HEAD

Este não teve nenhum efeito.

Alguém pode me dizer como posso apagar esse ramo origem / HEAD de rastreamento remoto?

atualizar

Embora eu não tenha encontrado porque há uma origem / HEAD criado quando clone de github, eu encontrar uma maneira de excluí-lo.

A nova versão do git fornecem

git remote set-head <name> -d

para apagar o ponteiro CABEÇA inútil de ramo de rastreamento remoto.

E nós também pode alterar o nome padrão mudo 'origem' para o que quisermos, usando

git remote rename origin <new_name>

Espero que isso possa ajudar. :)

Respondeu 30/07/2009 em 11:14
fonte usuário

votos
13

Você está certo de que empurrando para repos remoto dedicado funcionam muito melhor quando eles são 'nua', isto é, quando eles não têm diretórios de trabalho. A arquitetura do Git é projetado para atualizar por manchas ou pull( fetch), o que faz sentido em um VCS distribuído. Como os médicos dizem em algum lugar, empurrando a um ramo que está em check-out pode resultar em "resultados inesperados" .

A cabeça é parte dos requisitos para um repositório válido. Repositório Git layout diz, em parte:

HEAD

A symref (see glossary) to the refs/heads/ namespace describing the currently active  
branch. It does not mean much if the repository is not associated with any working tree  
(i.e. a bare repository), but a valid git repository must have the HEAD file; some  
porcelains may use it to guess the designated "default" branch of the repository  
(usually master). It is legal if the named branch name does not (yet) exist.

Então, você vai ver a cabeça como parte da lista ramo, mesmo que "isso não significa muita coisa ..."

Respondeu 10/12/2008 em 19:27
fonte usuário

votos
3

Se "origem" é um repositório remoto, em seguida, origem / HEAD identifica o ramo padrão em que repositório remoto.

Exemplo:

$ git remote show
origin
$ git remote show origin
* remote origin
  Fetch URL: git@github.com:walkerh/pipe-o-matic.git
  Push  URL: git@github.com:walkerh/pipe-o-matic.git
  HEAD branch: master
  Remote branch:
    master tracked
  Local branch configured for 'git pull':
    master merges with remote master
  Local ref configured for 'git push':
    master pushes to master (fast-forwardable)

Observe a linha que diz "CABEÇA ramo: mestre". Este é o lugar onde o repositório remoto permite que os clientes sabem que se ramificam para a verificação por padrão.

Respondeu 07/05/2012 em 23:53
fonte usuário

votos
2

Há sempre uma cabeça que aponta para o ramo em check-out no repo remoto (que pode ou não pode ser master). Mesmo repositórios remotos têm filiais atuais. Geralmente é mestre, e em cima da minha cabeça, eu não consigo pensar em nenhuma razão para que alguém iria querer mudá-lo, mas ele pode ser alterado.

Respondeu 10/12/2008 em 01:43
fonte usuário

votos
-8

Meu palpite é que alguém empurrou um galho e chamou-CABEÇA:

git push origin HEAD
Respondeu 10/12/2008 em 00:30
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more