git: O que significa um item extra “origin / HEAD” significa

1

Seguindo o conselho de um amigo meu, comecei a aprender git . Eu li manual (seções básicas) e acho que entendi mais sobre commits, branches, backward, forward, etc. mas quando se trata de sincronizar repositório local com remote, me sinto um pouco perdido.

Atualmente estou testando o git no meu repositório de testes. Eu estava adicionando arquivos e pastas localmente, em seguida, atualizando um repositório usando o site, adicionando arquivos adicionais. Em seguida, obtive arquivos, mesclei commits e, eventualmente, sincronizei repositórios remotos e locais. Agora, eu tenho este log:

*   5cf86124752ed91bde703bca0133b904b356c430 (HEAD -> master, origin/master, origin/HEAD) Merge branch 'master' into HEAD
|\
| * 510cb404d9a7d062739da7960546187436941e8e Add folder_local1/{folde_local1_program1, folde_local1_program2, folde_local1_program3}
* | d7461473939ee6663535650fec08962b30865c6e Delete folder_server2_program4.java
* | 010aba572c7424e81446e151433805ec6d2d92ea Delete folder_server2_program3.java
* | a30e5a06923935edbcb362afb6cf5dc169ec5a61 Delete folder_server2_program2.java
* | 89dc387d36a0370844bf90bc028e9b335de2b0b5 Delete folder_server2_program1.java
* | f80348f8fa02960cd20f349a862b7a31700a0fdd Delete x
* | 12deed224204c2ef5ab60c92f39682628fb23ab1 Add files via upload
* | f00f6b3d4feecd00f1258f32456e4bb5e2b4af4b Create x
* | 0e7965394aa9d36a17fefb2b52c032627c1e8e28 Add files via upload
* | 7d594dcdcd4b169a0563f63070c8975a5ee1bc27 Add files via upload
* | c078101bae4a3413700242025f2db9c4aeb9b1d8 Add files via upload
* | 9dab1a30425e4fc57e57770deb475dea341ab136 Update folder_server1_program1.java
* | 41b6ecad4759fdadcda8955046582178693612ae Create folder_server1_program1.java
|/
*   be40ad56685d5f836b88de960feb2d7b881e6f93 Merge branch 'master' of github.com:FranekW/testrepository
|\
| * 2790ba683034812c83da1310993e6326f91da42d Create README.md
* | 9caf9163056ccfc0b06cdd28704dee912f1643b5 Add folder1/{folder1_program1, folder1_program2, folder1_program3}
|/
* 376fe054b95134d7953cfafe3b70931ff036fbb8 Initial commit

Firs de todos, origin/master e origin/HEAD estão em vermelho. Em segundo lugar, eu não entendo o que é origin/HEAD fazendo lá? Eu embora HEAD é um ponteiro que aponta para o meu commit atual. Alguém poderia explicar se o log é ok ou eu errei demais. E também como entender "origem / CABEÇA".

Muito obrigado

    
por Celdor 27.03.2017 / 20:39

1 resposta

1

O HEAD tem alguns usos adicionais.

Devido a HEAD ser um ponteiro para a confirmação "atual", também é a confirmação que você obtém por padrão ao clonar esse repositório. Portanto, em repositórios remotos , embora eles não tenham uma árvore de trabalho, o HEAD ainda pode existir como um ponteiro para a ramificação "padrão" - aquela que os clones verificam automaticamente.

(Por exemplo, alguns projetos apontam HEAD do repo "master" para um branch 'dev' ou 'stable' em vez de master, para que as pessoas obtenham algo mais útil por padrão.)

No seu caso, no entanto, após clonagem, o Git mantém o <remote>/HEAD ref em volta porque ele tem mais um outro uso: ele define que a ramificação do Git tentará se o nome remoto é especificado.

Por exemplo, normalmente você não poderia fazer git log origin , já que refs / remotes / origin / é um diretório, portanto não pode apontar para nenhum lugar. No entanto, o Git então procura automaticamente a origem / HEAD e fornece a você qualquer ramificação que aponta para.

(Isso é configurável usando git remote set-head origin ... para qualquer ramo que você achar conveniente.)

    
por 27.03.2017 / 21:22

Tags