Pular para o conteúdo principal

Questão de Engenharia de Software — Git — VUNESP 2023

Engenharia de SoftwareGit
Código
vu196289
Banca
VUNESP
Órgão
UNICAMP
Ano
2023
Cargo
PTIC ( )
O Git possui um ponteiro especial utilizado para indicar o branch atual que está sendo trabalhado. O nome deste ponteiro é:
  1. AWORKPLACE
  2. BMASTER
  3. CSOURCE
  4. DTREE
  5. EHEAD
Revelar gabarito e comentário

GabaritoE — HEAD

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Git: o ponteiro HEAD

Gabarito: letra E. No Git, o ponteiro especial que indica o branch atual em que se está trabalhando é o HEAD. Ele é um ponteiro simbólico que, na prática, aponta para o commit mais recente do branch atual, e é por isso que o Git sabe onde aplicar o próximo commit. As demais alternativas (WORKPLACE, MASTER, SOURCE, TREE) não correspondem a esse conceito — MASTER é apenas o nome padrão do branch principal (hoje frequentemente chamado de main), e TREE é o objeto que representa um diretório no repositório.

O Git é um sistema de controle de versão distribuído que organiza o projeto em três áreas principais: o diretório de trabalho (working directory), a área de preparo (staging area) e o repositório (repository). Quando você faz um commit, o Git cria um snapshot do estado dos arquivos e o armazena como um objeto commit. Cada commit aponta para o commit anterior (seu pai), formando uma cadeia de histórico. O HEAD é o mecanismo que o Git usa para saber em qual ponto dessa cadeia você está: ele é um ponteiro que se move automaticamente a cada novo commit, sempre apontando para o último commit do branch atual.

Para entender melhor, imagine que você está trabalhando no branch main. O HEAD aponta para o commit mais recente de main. Quando você cria um novo branch com git branch feature, o Git cria um novo ponteiro chamado feature que também aponta para o mesmo commit — mas o HEAD continua apontando para main. Ao trocar para o branch feature com git checkout feature (ou git switch feature), o HEAD passa a apontar para feature. A partir daí, qualquer commit que você fizer moverá o ponteiro feature (e o HEAD junto) para o novo commit, enquanto main permanece onde estava. É assim que o Git rastreia em qual linha de desenvolvimento você está.

A distinção que importa aqui é entre HEAD e branch. O branch é um ponteiro móvel que representa uma linha de desenvolvimento; o HEAD é o ponteiro que indica qual branch está "ativo" no momento. Em situações de detached HEAD (quando você faz checkout de um commit específico, não de um branch), o HEAD aponta diretamente para um commit, e não para um branch — mas isso é uma exceção que reforça a regra: o HEAD é sempre o indicador do estado atual do repositório.

A pegadinha que a banca explora é justamente a confusão entre o nome do branch padrão (MASTER) e o ponteiro de posição (HEAD). Muitos candidatos, ao verem "ponteiro especial", lembram do branch principal e marcam MASTER. Mas o enunciado pede o ponteiro que indica o branch atual — e esse é o HEAD, não o nome do branch. Guarde essa fronteira: branch é o nome da linha de desenvolvimento; HEAD é o ponteiro que diz em qual linha você está agora.

Alternativa A — ❌ Incorreta

WORKPLACE não é um termo do Git. O conceito mais próximo seria o working directory (diretório de trabalho), que é uma das três áreas do Git, mas não é um ponteiro e não indica o branch atual. A banca usa esse termo apenas como distrator, pois soa como algo relacionado ao ambiente de trabalho.

Alternativa B — ❌ Incorreta

MASTER é o nome tradicional do branch principal (hoje em dia, muitos repositórios usam main). Ele é um branch, não um ponteiro especial que indica o branch atual. O erro aqui é confundir o nome do branch padrão com o ponteiro de posição. O HEAD aponta para o branch atual, que pode ser o master ou qualquer outro.

Alternativa C — ❌ Incorreta

SOURCE não é um termo do Git. Pode lembrar "código-fonte" (source code), mas não existe um ponteiro chamado SOURCE no Git. É um distrator puro, sem relação com o funcionamento do controle de versão.

Alternativa D — ❌ Incorreta

TREE é um objeto do Git que representa um diretório (uma árvore de arquivos e subdiretórios). Ele é usado internamente para armazenar a estrutura de arquivos de um commit, mas não é um ponteiro que indica o branch atual. A confusão aqui é entre o objeto que representa a estrutura de arquivos e o ponteiro de posição.

Alternativa E — ✅ Correta ⟵ GABARITO

HEAD é o ponteiro especial do Git que indica o branch atual. Ele é um ponteiro simbólico que aponta para o commit mais recente do branch em que você está trabalhando. Quando você faz um commit, o HEAD (e o branch) avançam para o novo commit. É por isso que o Git sabe onde aplicar as próximas alterações.

PEGA ESSA DICA!

Para fixar, lembre-se: HEAD = "onde estou agora". O branch é o nome da linha de desenvolvimento (master, main, feature), e o HEAD é o ponteiro que diz em qual linha você está. Se a questão perguntar "qual ponteiro indica o branch atual?", a resposta é sempre HEAD. Se perguntar "qual é o nome do branch principal?", aí sim pode ser master/main.

Gabarito: letra E

Link permanente: /questoes/vu196289