Pular para o conteúdo principal

Questão de TI - Desenvolvimento de Sistemas — Outros Tópicos de Desenvolvimento de Sistemas — Quadrix 2025

TI - Desenvolvimento de SistemasOutros Tópicos de Desenvolvimento de Sistemas
Código
qa699658
Banca
Quadrix
Órgão
CRM ES
Ano
2025
Cargo
ATI ( )

Em certa universidade, um analista é responsável pelo desenvolvimento da feature “Renovação de empréstimos” do sistema de empréstimo de livros da biblioteca dessa universidade. Esse analista, ao terminar de desenvolver a feature, realizou o commit direto na main por meio do comando git commit ‑m “Adiciona renovação automática.”, porém descobriu que seu commit desestabilizou todo o sistema, gerando vários erros e tornando a main instável.

Situação hipotética para a questão     Com base nessa situação hipotética, assinale a opção correta.
  1. AComo o erro foi identificado logo após o commit, o ideal seria o analista usar git pull para sincronizar com o repositório remoto antes de qualquer correção.
  2. BO analista deveria ter utilizado o comando git checkout ‑b feature/renovação, por exemplo, para criar uma branch separada antes de desenvolver essa nova funcionalidade.
  3. CA correção do problema poderia ser feita com um git revert HEAD, pois esse comando remove o commit anterior sem afetar o histórico do projeto.
  4. DO ideal, após identificar o erro, seria o analista usar o comando git reset ‑‑soft HEAD~1, pois ele remove o commit do histórico remoto e preserva o repositório remoto inalterado.
  5. EO erro do analista poderia ser evitado com o uso do comando git stash após o commit, para armazenar as mudanças de forma segura.
Revelar gabarito e comentário

GabaritoB — O analista deveria ter utilizado o comando git checkout ‑b feature/renovação, por exemplo, para criar uma branch separada antes de desenvolver essa nova funcionalidade.

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: branches, commit e correção de erros

Gabarito: letra B. O analista deveria ter criado uma branch separada (git checkout -b feature/renovação) antes de desenvolver a nova funcionalidade, seguindo o fluxo de trabalho com branches que isola o desenvolvimento e evita que alterações instáveis cheguem à main. As demais alternativas contêm erros conceituais sobre comandos Git: git pull não corrige erro de commit, git revert não remove o commit (cria um novo commit reverso), git reset --soft não altera o repositório remoto, e git stash não é usado após o commit.

O Git é um sistema de controle de versão distribuído que permite gerenciar o histórico de alterações de um projeto. Uma das práticas mais importantes é o uso de branches (ramificações): linhas independentes de desenvolvimento que partem de um ponto comum do histórico. Ao criar uma branch para desenvolver uma nova funcionalidade, o analista isola suas alterações da main (a branch principal, geralmente a versão estável do projeto). Somente após testar e validar a funcionalidade, ele faria o merge (integração) da branch de volta à main. Essa prática é essencial em equipes e até mesmo em projetos individuais, pois evita que código instável ou incompleto afete a versão principal.

No caso narrado, o analista cometeu dois erros: (1) desenvolveu a feature diretamente na main, sem criar uma branch separada; e (2) fez o commit direto na main, desestabilizando o sistema. A alternativa B aponta exatamente a solução preventiva: criar uma branch feature/renovação antes de desenvolver, isolando o trabalho. Essa é a prática recomendada em fluxos como Git Flow e GitHub Flow, onde a main deve permanecer sempre estável e pronta para deploy.

Para entender por que as outras alternativas estão erradas, é preciso dominar o que cada comando faz:

  • git pull: busca e integra alterações do repositório remoto ao local. Não corrige um commit que já foi feito; apenas atualiza o código local com o que está no remoto.

  • git revert: cria um novo commit que desfaz as alterações de um commit anterior, preservando o histórico. Não "remove" o commit; ele adiciona um commit reverso.

  • git reset --soft: move o ponteiro da branch para um commit anterior, mantendo as alterações na área de staging. Não altera o repositório remoto; apenas o histórico local.

  • git stash: guarda temporariamente alterações não commitadas, permitindo que o desenvolvedor mude de branch ou faça outras operações. Não é usado após o commit, pois o commit já registrou as mudanças.

A pegadinha da banca está em confundir o propósito de cada comando, especialmente git revert e git reset. O candidato que não domina a diferença entre "desfazer" (revert) e "remover" (reset) pode cair na alternativa C. Além disso, a alternativa D mistura conceitos de histórico local e remoto, afirmando que o reset --soft remove o commit do histórico remoto, o que é falso.

Guarde a distinção central: branches isolam o desenvolvimento (prevenção) e revert/reset corrigem erros (reação). A questão cobra a prática preventiva, que é a alternativa B.

Comando

Efeito no histórico

Uso correto

git pull

Atualiza o local com o remoto (integração)

Sincronizar com o repositório remoto

git revert

Cria novo commit reverso (preserva histórico)

Desfazer alterações de um commit anterior

git reset --soft

Move o ponteiro da branch (altera histórico local)

Desfazer commit mantendo alterações em staging

git stash

Guarda alterações não commitadas

Mudar de branch sem perder trabalho em andamento

git checkout -b

Cria nova branch (isola desenvolvimento)

Desenvolver feature sem afetar a main

Git: prevenção vs correção
  • 1Prevenção (branches)
    • git checkout -b feature
    • Isola desenvolvimento da main
  • 2Correção (desfazer erros)
    • git revert (novo commit reverso)
    • git reset (move ponteiro local)
  • 3Outros comandos
    • git pull (sincroniza remoto)
    • git stash (mudanças não commitadas)
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

O comando git pull sincroniza o repositório local com o remoto, baixando e integrando alterações. No cenário, o erro já foi cometido (commit na main), e o git pull não corrige o problema — ele apenas atualiza o código local com o que está no remoto. A alternativa sugere uma ação que não resolve a instabilidade causada pelo commit. O correto seria reverter ou resetar o commit, ou, preventivamente, ter usado uma branch.

Alternativa B — ✅ Correta ⟵ GABARITO

A alternativa B está correta porque descreve a prática recomendada de desenvolvimento: criar uma branch separada (git checkout -b feature/renovação) antes de desenvolver a nova funcionalidade. Isso isola as alterações da main, evitando que código instável ou incompleto afete a versão principal. Após validar a feature, o analista faria o merge de volta à main. Essa é a essência do fluxo de trabalho com branches, amplamente adotado em equipes de desenvolvimento.

Alternativa C — ❌ Incorreta

O comando git revert HEAD cria um novo commit que desfaz as alterações do commit anterior, preservando o histórico. Ele não "remove" o commit; adiciona um commit reverso. A alternativa afirma que o comando "remove o commit anterior sem afetar o histórico", o que é contraditório: o revert preserva o histórico justamente por criar um novo commit. O erro está em descrever o revert como uma remoção, quando na verdade é uma reversão.

Alternativa D — ❌ Incorreta

O comando git reset --soft HEAD~1 move o ponteiro da branch para o commit anterior, mantendo as alterações na área de staging. Ele não remove o commit do histórico remoto — na verdade, o reset só afeta o histórico local, e o repositório remoto permanece inalterado até que um git push --force seja executado. A alternativa mistura conceitos: o reset --soft não altera o remoto, e o histórico local é modificado, não o remoto.

Alternativa E — ❌ Incorreta

O comando git stash é usado para guardar temporariamente alterações não commitadas, permitindo que o desenvolvedor mude de branch ou faça outras operações. Após o commit, as alterações já foram registradas no histórico, e o stash não é aplicável — ele só funciona com mudanças não commitadas. A alternativa sugere usar o stash após o commit, o que é conceitualmente incorreto.

NÃO CAIA NESSA!

A banca troca os conceitos de git revert e git reset. O candidato que não domina a diferença entre "desfazer" (revert) e "remover" (reset) pode cair na alternativa C. Lembre-se: o revert cria um novo commit reverso, preservando o histórico; o reset move o ponteiro da branch, alterando o histórico local. Com treino, você enxerga essas trocas de longe 💪

PEGA ESSA DICA!

Para questões de Git, foque em entender o propósito de cada comando: pull (sincronizar), revert (desfazer com novo commit), reset (mover ponteiro), stash (guardar mudanças não commitadas) e branch (isolar desenvolvimento). Monte uma tabela mental com esses comandos e seus efeitos no histórico local e remoto.

Gabarito: letra B

Link permanente: /questoes/qa699658