Pular para o conteúdo principal

Questão de Engenharia de Software — Git — FCC 2024

Engenharia de SoftwareGit
Código
fc147279
Banca
FCC
Órgão
BAHIAGÁS
Ano
2024
Cargo
APO ( )

Um Analista deseja integrar uma branch de recursos em uma branch principal no git. Inicialmente ele utilizou um comando para obter as informações mais recentes do repositório e outro comando para mudar para a branch que receberá as mudanças. Em seguida, verificou o estado atual do repositório para garantir que não haja mudanças pendentes ou conflitos e, para integrar mudanças da branch secundária chamada sistema para a branch atual, utilizou o comando git

  1. Amerge sistema
  2. Bpush sistema
  3. Cjoin sistema
  4. Dsave sistema
  5. Ecommit sistema
Revelar gabarito e comentário

GabaritoA — merge sistema

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: integração de branches com merge

Gabarito: letra A. Para integrar as mudanças da branch sistema na branch atual, o comando correto é git merge sistema, que incorpora o histórico da branch secundária à branch de destino (branch principal). Os demais comandos (push, join, save, commit) não realizam essa integração: push envia commits para um repositório remoto, join e save não são comandos do Git, e commit registra alterações do índice no repositório local.

O Git é um sistema de controle de versão distribuído que organiza o projeto em três áreas principais: o diretório de trabalho (onde os arquivos são editados), a área de preparo (staging area, onde as alterações são registradas antes do commit) e o repositório (onde o histórico é armazenado permanentemente). Quando você trabalha com branches, cada uma representa uma linha independente de desenvolvimento. Integrar uma branch em outra é uma operação fundamental do fluxo de trabalho, e o Git oferece dois comandos principais para isso: merge e rebase.

O merge cria um novo commit de integração que combina o histórico das duas branches, preservando a história de ambas. Já o rebase reescreve o histórico, aplicando os commits de uma branch sobre a outra, o que pode tornar o histórico linear, mas é perigoso se a branch já foi publicada, pois reescrever commits já compartilhados quebra o repositório de outros desenvolvedores. A questão descreve exatamente o cenário de integração: o analista já está na branch que receberá as mudanças (após git checkout ou git switch), verificou o estado do repositório (com git status) e agora quer trazer as mudanças da branch sistema. O comando que faz isso é git merge sistema.

Na prática, o fluxo seria:

  1. git fetch (ou git pull) para obter as informações mais recentes do repositório remoto.

  2. git checkout main (ou git switch main) para mudar para a branch principal.

  3. git status para verificar se não há mudanças pendentes ou conflitos.

  4. git merge sistema para integrar as mudanças da branch sistema na branch atual (main).

O merge pode gerar conflitos se as mesmas linhas de código foram alteradas nas duas branches; nesse caso, o Git marca os arquivos conflitantes e o desenvolvedor precisa resolvê-los manualmente antes de concluir o merge. Mas a questão não aborda conflitos, apenas a operação de integração em si.

A pegadinha aqui é que muitos candidatos confundem merge com push. O push envia commits do repositório local para um remoto (como GitHub, GitLab), mas não integra branches localmente. Já o merge é a operação que une o histórico de duas branches no repositório local. Os comandos join e save simplesmente não existem no Git, e commit apenas registra as alterações que estão na área de preparo, não integra branches.

Guarde a distinção: merge = integração local de branches; push = envio para repositório remoto. É exatamente essa fronteira que separa a alternativa correta das demais.

  1. 1git fetch/pull
  2. 2git checkout main
  3. 3git status
  4. 4git merge sistema
LEVEL · soulevel.com.br

Alternativa A — ✅ Correta ⟵ GABARITO

O comando git merge sistema integra as mudanças da branch sistema na branch atual. É a operação padrão para unir o histórico de duas branches, criando um commit de merge (ou avançando a branch atual, se for um fast-forward). O enunciado descreve exatamente esse cenário: o analista já está na branch que receberá as mudanças e quer incorporar as alterações da branch secundária. O merge é o comando que realiza essa integração.

Alternativa B — ❌ Incorreta

git push sistema envia os commits da branch local sistema para um repositório remoto, mas não integra a branch sistema na branch atual. O push é usado para publicar alterações no servidor remoto, não para mesclar branches localmente. A banca troca a finalidade: push é para envio remoto, merge é para integração local.

Alternativa C — ❌ Incorreta

git join sistema não é um comando válido do Git. Não existe operação join no Git para integrar branches. O comando correto para essa finalidade é merge (ou rebase). A alternativa inventa um comando que não faz parte do conjunto de comandos do Git.

Alternativa D — ❌ Incorreta

git save sistema também não é um comando do Git. Não há comando save no Git para salvar ou integrar mudanças. O Git usa commit para salvar alterações no repositório e merge para integrar branches. A alternativa apresenta um comando inexistente.

Alternativa E — ❌ Incorreta

git commit sistema registra as alterações que estão na área de preparo (staging area) no repositório local, criando um novo commit. Mas não integra a branch sistema na branch atual. O commit é uma operação de salvamento do estado atual, não de integração entre branches. Para integrar, seria necessário merge sistema.

Gabarito: letra A — o comando git merge sistema é o que integra as mudanças da branch sistema na branch atual.

Link permanente: /questoes/fc147279