Pular para o conteúdo principal

Questão de Engenharia de Software — Geral — INSTITUTO AOCP 2025

Engenharia de SoftwareGeral
Código
qa700114
Banca
INSTITUTO AOCP
Órgão
IF PB
Ano
2025
Cargo
Ana TI ( )
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 em arquivos

Gabarito: letra D. O comando git blame <arquivo> é o que permite identificar quem alterou cada linha de um arquivo e em qual commit cada alteração foi realizada, exatamente como descrito no enunciado. Esse comando é uma ferramenta essencial do Git para auditoria e entendimento do histórico de um arquivo específico.

O Git é um sistema de controle de versão distribuído, o que significa que cada desenvolvedor possui uma cópia completa do repositório em sua máquina local. Ele trata os dados como um conjunto de imagens (snapshots) do sistema de arquivos, garantindo a integridade dos dados por meio de checksums (cada commit recebe um ID exclusivo de 40 caracteres, uma soma SHA-1). Dentro desse contexto, o comando git blame é uma ferramenta de investigação que percorre o histórico de um arquivo e atribui a cada linha a informação do commit e do autor que a introduziu ou modificou pela última vez.

A utilidade do git blame vai além da simples curiosidade: ele é fundamental para entender a evolução do código, identificar quem introduziu uma mudança específica (útil em revisões de código e na resolução de conflitos), e para rastrear a origem de um bug ou de uma decisão de implementação. Ao executar git blame <arquivo>, o Git exibe, para cada linha do arquivo, o hash do commit, o autor, a data e a mensagem do commit que originou aquela linha. É uma ferramenta de auditoria e análise de histórico.

É importante distinguir o git blame de outros comandos que também lidam com o histórico, mas de formas diferentes. O git log mostra o histórico de commits, mas não associa cada linha a um commit. O git show exibe o conteúdo de um commit específico ou de um arquivo em um determinado commit, mas não faz a análise linha por linha. O git diff compara versões de arquivos, mostrando as diferenças entre elas, mas não atribui autoria a cada linha. O git blame é o único que faz essa atribuição direta, linha por linha, com o autor e o commit.

A banca explora a confusão entre comandos que lidam com o histórico de forma geral e o comando específico para análise de autoria por linha. O candidato pode se lembrar de que git log mostra o histórico, mas não perceber que a questão pede a análise linha por linha, que é a função do git blame. A palavra-chave no enunciado é "identificar quem alterou cada linha do arquivo e em qual commit cada alteração foi realizada", que descreve precisamente a função do git blame.

Alternativa A — ❌ Incorreta

O comando git stash <arquivo> é utilizado para salvar temporariamente as alterações não commitadas no diretório de trabalho, permitindo que o desenvolvedor mude de branch ou faça outras operações sem perder o trabalho em andamento. Ele não tem relação com a análise de autoria de linhas de um arquivo. O git stash é uma forma de "guardar" mudanças para depois, mas não fornece informações sobre quem alterou cada linha.

Alternativa B — ❌ Incorreta

O comando git fetch <arquivo> é usado para baixar objetos e referências de um repositório remoto para o repositório local, sem integrar as mudanças ao branch de trabalho atual. Ele é uma etapa do processo de sincronização com o repositório remoto, mas não analisa o conteúdo de um arquivo nem fornece informações sobre autoria de linhas. O git fetch atualiza as referências remotas, mas não mostra quem alterou cada linha.

Alternativa C — ❌ Incorreta

O comando git show <arquivo> é utilizado para exibir o conteúdo de um commit específico ou de um arquivo em um determinado commit. Ele mostra o que foi alterado em um commit, mas não faz a análise linha por linha de um arquivo, atribuindo autoria a cada linha. O git show é útil para ver o conteúdo de um commit, mas não é a ferramenta para identificar quem alterou cada linha de um arquivo.

Alternativa D — ✅ Correta ⟵ GABARITO

O comando git blame <arquivo> é exatamente o que o enunciado descreve. Ele percorre o histórico do arquivo e, para cada linha, mostra o hash do commit, o autor, a data e a mensagem do commit que originou aquela linha. É a ferramenta ideal para entender o histórico e a autoria das modificações em um arquivo específico, linha por linha.

Alternativa E — ❌ Incorreta

O comando git status <arquivo> é utilizado para mostrar o estado do diretório de trabalho e da área de preparo (staging area). Ele informa quais arquivos foram modificados, quais estão preparados para commit e quais não estão sendo rastreados. Ele não fornece informações sobre quem alterou cada linha de um arquivo, apenas o estado atual dos arquivos em relação ao repositório.

Gabarito: letra D

Link permanente: /questoes/qa700114