Pular para o conteúdo principal

Questão de Engenharia de Software — Git — INSTITUTO AOCP 2024

Engenharia de SoftwareGit
Código
qa631582
Banca
INSTITUTO AOCP
Órgão
DPE MS
Ano
2024
Cargo
Ana Def ( )
No Git, o ponto no histórico do projeto que indica um conjunto de modificações realizadas em um ou mais arquivos do projeto naquele momento é denominado
  1. ABreak.
  2. BHash.
  3. CCommit.
  4. DLSM.
  5. EAbstração.
Revelar gabarito e comentário

GabaritoC — Commit.

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 conceito de commit

Gabarito: letra C. No Git, o commit é exatamente o ponto no histórico do projeto que registra um conjunto de modificações realizadas em um ou mais arquivos naquele momento — uma "foto" (snapshot) do estado do projeto. As demais alternativas (Break, Hash, LSM, Abstração) não correspondem a esse conceito: hash é o identificador único do commit, e os outros termos não pertencem ao vocabulário do Git.

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. Diferentemente de sistemas centralizados (como o SVN), que armazenam apenas as diferenças entre versões, o Git trata os dados como um conjunto de snapshots do sistema de arquivos. Cada vez que você faz um commit, o Git tira uma foto do estado atual de todos os arquivos rastreados e guarda uma referência a essa foto. Isso permite que o histórico seja reconstruído de forma íntegra e rápida, sem depender de um servidor central.

O fluxo de trabalho básico no Git envolve três áreas principais:

  • Diretório de Trabalho (Working Directory): onde você cria, edita e modifica os arquivos.

  • Área de Preparo (Staging Area): um espaço temporário que registra as alterações que serão incluídas no próximo commit (com o comando git add).

  • Repositório (Repository): onde ficam armazenados permanentemente todos os commits, formando o histórico do projeto.

Quando você executa git commit, o Git consolida as alterações que estavam na área de preparo, cria um novo snapshot e atribui a ele um hash único (um código SHA-1 de 40 caracteres). Esse hash é o identificador do commit, mas não é o commit em si — o commit é o conjunto de modificações registradas. É por isso que a alternativa B (Hash) é um distrator: ela confunde o identificador com o objeto que ele identifica.

A pegadinha desta questão é justamente essa: o candidato que conhece o Git sabe que o hash é um elemento importante, mas pode esquecer que o commit é o conceito central que representa o ponto no histórico. As outras alternativas (Break, LSM, Abstração) são termos de outras áreas da computação, sem relação direta com o controle de versão.

Guarde a distinção: commit é o registro das modificações; hash é o código que identifica esse registro. É nessa fronteira que as alternativas se separam.

  1. 1Working Directory
  2. 2Staging Area (git add)
  3. 3Commit (snapshot)
  4. 4Hash (identificador)
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

Break não é um termo do Git. Em programação, "break" é uma instrução de controle de fluxo (usada para interromper loops), mas não tem relação com controle de versão. A banca incluiu esse termo apenas como distrator, aproveitando que é uma palavra comum em inglês.

Alternativa B — ❌ Incorreta

Hash é o identificador único (checksum SHA-1) atribuído a cada commit, mas não é o ponto no histórico que representa as modificações. O hash é uma consequência do commit — ele serve para garantir a integridade e identificar o commit, mas o conceito pedido no enunciado é o próprio commit. A banca tenta confundir o candidato que sabe que o hash é importante, mas não distingue o objeto do seu identificador.

Alternativa C — ✅ Correta ⟵ GABARITO

Commit é exatamente o ponto no histórico do projeto que indica um conjunto de modificações realizadas em um ou mais arquivos naquele momento. É a operação que consolida as alterações da área de preparo no repositório, criando um novo snapshot do projeto. O enunciado descreve com precisão o conceito de commit, e é essa a definição cobrada pela banca.

Alternativa D — ❌ Incorreta

LSM (Log-Structured Merge-tree) é uma estrutura de dados usada em bancos de dados (como o Cassandra e o LevelDB) para otimizar operações de escrita. Não tem relação com o Git nem com controle de versão. É um termo técnico de outra área, usado como distrator para confundir candidatos que conhecem o termo em outro contexto.

Alternativa E — ❌ Incorreta

Abstração é um princípio fundamental da engenharia de software e da programação orientada a objetos, mas não é um conceito do Git. A abstração consiste em ocultar detalhes de implementação e focar no essencial, mas não se aplica ao registro de modificações no histórico. A banca incluiu esse termo para testar se o candidato sabe diferenciar conceitos gerais de engenharia de software dos conceitos específicos do Git.

NÃO CAIA NESSA!

A banca explora a confusão entre commit e hash. O candidato que sabe que o hash é importante pode marcar a letra B, mas o hash é apenas o identificador do commit — o commit é o registro das modificações em si. Lembre-se: o hash é uma consequência do commit, não o conceito pedido.

PEGA ESSA DICA!

Para fixar, associe o commit a uma "foto" do projeto: cada commit é um snapshot completo do estado dos arquivos. O hash é o "número da foto". Quando a questão falar em "ponto no histórico" ou "conjunto de modificações", a resposta é sempre commit.

Gabarito: letra C

Link permanente: /questoes/qa631582