Questão de Engenharia de Software — Git — FCC 2024
Engenharia de Software›Git
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
Amerge sistema
Bpush sistema
Cjoin sistema
Dsave sistema
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:
git fetch (ou git pull) para obter as informações mais recentes do repositório remoto.
git checkout main (ou git switch main) para mudar para a branch principal.
git status para verificar se não há mudanças pendentes ou conflitos.
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.
1git fetch/pull
2git checkout main
3git status
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.