O que é Head in Git?

Às vezes, você vê a documentação do Git referente a algo chamado HEAD. Por exemplo, a ramificação deve ser completamente integrada no HEAD. Mas o que exatamente é Git HEAD?

Neste artigo, conheceremos mais sobre o Git HEAD, mas antes disso vamos resumir o que é o Git e para que é usado. O Git é uma ferramenta de controle distribuído usada não apenas por gerentes e desenvolvedores de produtos, mas também por cientistas de dados para gerenciar o desenvolvimento do código-fonte do programa e seu histórico.

Ponteiro HEAD no Git

O Git mantém uma variável para referência, chamada HEAD para a confirmação mais recente no ramo de checkout recente. Você pode imaginar HEAD como o "ramo comprometido atual". E podemos pensar como um ponteiro, como o objetivo dessa variável é apontar ou agir como uma referência a um commit específico no repositório. Digamos, nós fazemos um novo commit no repositório, então o ponteiro ou HEAD irá mover ou mudar sua posição para apontar para um novo commit.

HEAD aponta para o ponto inicial da ramificação atual no repositório o tempo todo. Pode ser considerado o último estado ou o último ponto de check-out em um repositório. Em outras palavras, o HEAD é um ponteiro para o pai dos próximos commits ou para onde o próximo commit acontecerá, pois é aí que o repo parou.

Uma boa analogia seria um toca-discos e as teclas de reprodução e gravação como HEAD. À medida que o áudio começa a gravar, a fita avança passando pela cabeça gravando nela. O botão Parar interrompe a gravação enquanto ainda aponta para o ponto que foi gravado pela última vez e o ponto em que a cabeça de gravação parou é onde continuará a gravar novamente quando a tecla Gravar for pressionada novamente. Se nos movimentarmos, o ponteiro da cabeça se moverá para lugares diferentes; no entanto, quando a tecla Record for pressionada novamente, a gravação começará a partir do ponto em que a cabeça estava apontando quando a tecla foi pressionada.

No Git, você pode usar o comando abaixo para ver o que o ponteiro HEAD aponta.

cat .git / HEAD:

  • Ele mostra o conteúdo de .git / HEAD como mostrado abaixo
  • ref: refs / chefes / mestre
  • É basicamente uma referência simbólica à ramificação confirmada mais recente que você efetuou check-out e efetivamente aponta para a confirmação no início da ramificação atual.

Sempre que fazemos um novo commit, como mostrado abaixo, ele é adicionado antes do HEAD atual, que faz o Git apontar automaticamente o HEAD para o novo commit.

git diff HEAD..HEAD ~ 3: Mais precisamente, HEAD é um ponteiro em movimento que pode se referir à ramificação atual ou não, mas que sempre se refere ao "commit atual". (Commit atual) é o commit que o “git commit” é construído sobre, e geralmente é comparado com o “git diff –cached” e o “status git”.

git log @: Digitar 'HEAD' leva tempo, especialmente quando existe um atalho, '@'. O símbolo '@' é escolhido porque segue naturalmente a sintaxe (por exemplo, (u)), mas, além disso, não há referência ou operação e, quando não houver, 'HEAD 'pode ser assumido no lugar de @.

1. CABEÇA Isolada

É plausível para o HEAD apontar para uma alteração específica que ainda não foi vinculada a um nome de filial. Essa é a situação chamada HEAD desanexada e acontece quando alguém faz check-out de algo que não seja uma ramificação (local), digamos uma confirmação específica, uma ramificação remota ou uma tag. Portanto, o HEAD desanexado pode ser usado para fazer check-out de uma confirmação que não está apontando para o ponto inicial de qualquer filial existente ou para criar uma nova confirmação que não seja necessariamente referenciada por uma filial conhecida.

Vamos dar um exemplo em que fazemos checkout commit b de uma ou de outra maneira

  • mestre de verificação geral do git ^#or
  • git checkout v3.1

Observe que, independentemente do comando de checkout usado, o HEAD agora se refere à confirmação b. Esse status de b é chamado como estado HEAD desanexado.

Vejamos os exemplos abaixo para ver o que acontece quando um commit é criado:

git checkout -b foo: Primeiro é criada uma nova ramificação chamada foo, que é referida como commit f que, por sua vez, atualiza o HEAD para apontar para a ramificação foo. Isso significa que ele não estará mais no estado HEAD desanexado.

git branch foo: Isso cria um novo branch chamado foo, que é referido como commit f, mas o HEAD é deixado desanexado.

tag git foo: Isso também cria uma nova tag chamada foo, que é referida como commit f, mas o HEAD é deixado desanexado.

Suponha que você alterou para uma posição diferente de commit f, então o nome do objeto deve ser recuperado primeiro (normalmente feito usando o comando git reflog) e, depois disso, uma referência é criada para ele.

Para descobrir os dois últimos commits HEAD mencionados, use um dos comandos abaixo:

  • git log -g -2 HEAD #ou
  • git reflog -2 HEAD

2. ORIG_HEAD

Há mais um tipo de CABEÇA que você precisa conhecer. Os comandos “mesclar” ou “puxar” sempre deixaram a ponta original da ramificação atual em algo chamado ORIG_HEAD. Pode ser usado usando os seguintes comandos.

git reset –hard ORIG_HEAD: Usando isso, reset hard traz o arquivo de índice junto com a árvore de trabalho de volta ao seu estado original, enquanto redefine a ponta do ramo para esse commit, mas descarta as alterações locais.

git reset –merge ORIG_HEAD: Mas e se você quiser manter as alterações locais, no sentido de poder usar o comando acima para manter as alterações locais. Além disso, o merge sempre define '.git / ORIG_HEAD' para o estado original de HEAD, para uma mesclagem problemática pode ser removida usando 'git reset ORIG_HEAD'. Além disso, a mesclagem define '.git / ORIG_HEAD' para o estado original de HEAD o tempo todo, para remover uma mesclagem problemática usando 'git reset ORIG_HEAD'.

Se você enfrentar algum problema com várias confirmações, ORIG_HEAD é definido como o ponto inicial da ramificação atual antes de aplicar qualquer correção, pois um erro nas confirmações pode ser mais facilmente corrigido dessa maneira.

Vantagens do Git HEAD

  • É usado para apontar para a ramificação confirmada recentemente.
  • Pode ser usado para fazer alterações a partir do último ponto visitado.
  • Também pode ser usado para ir para diferentes pontos da história e trabalhar a partir daí.
  • Mantém o repositório e o processo limpos e legíveis.

Conclusão

O Git tem muitos usos e é amplamente utilizado por desenvolvedores, gerentes de produto e cientistas de dados. Seus comandos são muito eficazes e podem ser muito úteis. HEAD é uma referência ao último commit no ramo de check-out atualmente.

Artigos recomendados

Este é um guia para O que é o Head in Git ?. Aqui discutimos o ponteiro HEAD no Git, que inclui HEAD destacado e ORIG_HEAD junto com as vantagens do Git HEAD. Você também pode consultar os seguintes artigos para saber mais -

  1. O que é o Git Fetch?
  2. Git Fetch vs Git Fetch
  3. O que é o Git Branch?
  4. Terminologia Git
  5. Sistema de Controle de Versão GIT
  6. Git Push
  7. Três estágios do ciclo de vida do Git com o fluxo de trabalho
  8. Como usar o GIT Cherry-pick com o Exemplo?

Categoria: