Questão de Engenharia de Software — Geral — INSTITUTO AOCP 2025
- Código
- qa700114
- Banca
- INSTITUTO AOCP
- Órgão
- IF PB
- Ano
- 2025
- Cargo
- Ana TI ( )
- Agit stash <arquivo>
- Bgit fetch <arquivo>
- Cgit show <arquivo>
- Dgit blame <arquivo>
- Egit status <arquivo>
GabaritoD — git blame <arquivo>
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.
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.
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.
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.
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.
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