O Que É HEAD no Git?
HEAD é um ponteiro para o commit que você tem atualmente em checkout, geralmente por meio da branch em que você está.
HEAD é uma das referências mais úteis de entender no Git. Ele diz onde você está: o commit que seu diretório de trabalho reflete e o lugar ao qual seu próximo commit vai se anexar. Na maior parte do tempo o HEAD aponta para uma branch, que por sua vez aponta para um commit.
Para o que o HEAD aponta
Normalmente o HEAD aponta para um nome de branch, e essa branch aponta para um commit. Então o HEAD identifica indiretamente o seu commit atual. Quando você faz um novo commit, a branch avança e o HEAD a segue, mantendo você na ponta da sua branch.
Inspecionando o HEAD
Você pode perguntar ao Git onde o HEAD está e referenciá-lo pelo nome nos comandos.
git rev-parse HEAD
git log -1 HEAD
git show HEAD~1Como o HEAD se move
Trocar de branch move o HEAD para apontar para a nova branch. Fazer commit avança a branch e o HEAD juntos. Você também pode referenciar commits relativos ao HEAD, por exemplo HEAD~1 para o commit anterior, o que é útil para inspecionar ou desfazer trabalho recente.
HEAD em CI/CD
Quando um runner de CI faz checkout do seu repositório, ele define o HEAD para o commit sendo construído. Muitos pipelines calculam diffs contra o HEAD ou uma ref base para decidir quais testes executar. Saber para o que o HEAD aponta em um job ajuda a explicar por que um workflow fez o build de um commit específico.
Coisas para lembrar sobre o HEAD
- O HEAD geralmente aponta para uma branch, que aponta para um commit.
- Fazer commit move a branch e o HEAD juntos.
- HEAD~1 e HEAD^ referenciam commits anteriores em relação ao agora.
- Um HEAD desanexado aponta diretamente para um commit, não para uma branch.
Principais conclusões
- HEAD aponta para o seu commit atual, geralmente através de uma branch.
- Ele se move conforme você faz commit e troca de branch.
- O CI define o HEAD para o commit que ele faz checkout e build.