Pular para o conteúdo principal

Questão de Engenharia de Software — Gerência de Configuração — INSTITUTO AOCP 2025

Engenharia de SoftwareGerência de Configuração
Código
qg539705
Banca
INSTITUTO AOCP
Órgão
IF-PB
Ano
2025
Nível
Superior
Cargo
Analista de Tecnologia da Informação
Um analista de tecnologia da informação do IFPB está trabalhando em um projeto utilizando Git como ferramenta de versionamento. Durante a análise de um arquivo específico, ele deseja identificar quem alterou cada linha do arquivo e em qual commit cada alteração foi realizada, a fim de entender o histórico e a autoria das modificações. Qual comando do Git permite obter essas informações?
  1. Agit stash <arquivo>
  2. Bgit fetch <arquivo>
  3. Cgit show <arquivo>
  4. Dgit blame <arquivo>
  5. Egit status <arquivo>
Revelar gabarito e comentário

GabaritoD — git blame <arquivo>

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: identificando autoria de alterações com git blame

Gabarito: letra D. O comando git blame <arquivo> exibe, linha por linha, o autor e o hash do commit responsável pela última alteração de cada linha do arquivo — exatamente o que o analista precisa para entender o histórico e a autoria das modificações. Os demais comandos têm finalidades distintas: git stash guarda alterações temporariamente, git fetch baixa referências do repositório remoto, git show exibe detalhes de um objeto (commit, tag, etc.) e git status mostra o estado do diretório de trabalho e da área de preparo.

O Git é um sistema de controle de versão distribuído que trata os dados como um conjunto de imagens (snapshots) do sistema de arquivos. Cada commit recebe um identificador único (SHA-1) e armazena o autor, a data e a mensagem da alteração. O comando git blame é a ferramenta específica para rastrear a autoria de cada linha de um arquivo: ele percorre o histórico e associa cada linha ao commit que a introduziu ou modificou pela última vez. Na prática, o analista executaria git blame arquivo.txt e veria, para cada linha, o hash abreviado do commit, o autor, a data e o conteúdo da linha. Isso é fundamental para auditoria de código, revisão de alterações e entendimento da evolução do projeto.

A banca explora a confusão entre comandos que parecem relacionados, mas têm propósitos bem distintos. O git show é um dos mais confundidos com o git blame, pois ambos exibem informações do histórico; porém, git show mostra o conteúdo de um objeto específico (como um commit ou uma tag), não a autoria linha a linha de um arquivo. Já o git log (não listado nas alternativas) mostra o histórico de commits, mas sem o detalhamento por linha. O git status apenas informa quais arquivos foram modificados, adicionados ou removidos, sem qualquer informação de autoria. O git fetch atualiza as referências do repositório remoto, e o git stash guarda alterações não commitadas para uso posterior.

Para fixar, veja a função de cada comando:

Comando

Função principal

git blame <arquivo>

Mostra autor e commit de cada linha do arquivo

git show <objeto>

Exibe detalhes de um commit, tag ou árvore

git status

Mostra o estado do diretório de trabalho e da área de preparo

git fetch

Baixa referências do repositório remoto sem mesclar

git stash

Guarda temporariamente alterações não commitadas

Guarde a fronteira entre git blame (autoria por linha) e git show (conteúdo de um objeto): é exatamente nela que as alternativas se dividem.

Alternativa A — ❌ Incorreta

git stash <arquivo> não existe como sintaxe padrão; o comando correto é git stash (sem argumento) ou git stash push <arquivo>. Sua função é guardar temporariamente alterações não commitadas, permitindo que o desenvolvedor mude de branch ou limpe o diretório de trabalho sem perder o trabalho em andamento. Não fornece nenhuma informação sobre autoria de linhas.

Alternativa B — ❌ Incorreta

git fetch <arquivo> não é um uso válido: git fetch é usado para baixar commits, branches e tags do repositório remoto para o repositório local, sem mesclá-los automaticamente. Não tem relação com a análise de autoria de linhas de um arquivo específico.

Alternativa C — ❌ Incorreta

git show <arquivo> não é a forma correta de usar o comando. git show é utilizado para exibir detalhes de um objeto do Git, como um commit (mostrando o diff e metadados), uma tag ou uma árvore. Para um arquivo, o comando adequado seria git show <commit>:<arquivo> para ver o conteúdo em um commit específico, mas isso não mostra a autoria linha a linha. O comando que atende ao requisito do enunciado é o git blame.

Alternativa D — ✅ Correta ⟵ GABARITO

git blame <arquivo> é o comando que mostra, para cada linha do arquivo, o hash do commit que a alterou pela última vez, o autor, a data e o conteúdo da linha. É a ferramenta ideal para identificar quem alterou cada linha e em qual commit, conforme o enunciado. Exemplo: git blame src/main.java exibe uma tabela com essas informações.

Alternativa E — ❌ Incorreta

git status <arquivo> mostra o estado do arquivo no diretório de trabalho e na área de preparo (modificado, adicionado, etc.), mas não fornece informações sobre autoria ou commits. É um comando de consulta de estado, não de histórico.

Gabarito: letra D

Link permanente: /questoes/qg539705