Questão de Engenharia de Software — Gerência de Configuração — FGV 2024
Engenharia de Software›Gerência de Configuração
Código
fg098573
Banca
FGV
Órgão
TJ-MS
Ano
2024
Nível
Superior
Cargo
Técnico de Nível Superior - Analista de Sistemas Computacionais - Web Designer
A analista Joana está desenvolvendo um projeto com o apoio da ferramenta de versionamento de código Git. Sua cópia de trabalho atual está apontando para o branch tarefa-um. Joana precisa aplicar dois commits específicos e não sucessivos, do branch tarefa-dois, na sua cópia de trabalho.Para realizar a operação por meio da ferramenta de linha de comando git, ela deve empregar o seguinte comando do git:
Adiff;
Bapply;
Crevert;
Drebase;
Echerry-pick.
Revelar gabarito e comentário▾
GabaritoE — cherry-pick.
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”.
Comando Git para aplicar commits específicos entre branches
Gabarito: letra E. O comando git cherry-pick é utilizado para aplicar um ou mais commits específicos de uma branch em outra, mesmo que não sejam consecutivos, exatamente o que Joana precisa ao selecionar dois commits não sucessivos do branch tarefa-dois e aplicá-los no branch tarefa-um.
A banca testa o conhecimento dos comandos básicos do Git, principalmente aqueles que manipulam o histórico entre branches. O enunciado descreve uma situação muito comum: pegar mudanças pontuais de outra linha de desenvolvimento sem mesclar a branch inteira.
Comando
Função principal
Aplica commits específicos entre branches?
Adequado para o cenário?
diff
Exibe diferenças entre commits, branches ou diretório de trabalho
Não
❌
apply
Aplica um arquivo de patch no diretório de trabalho
Não (não opera diretamente sobre commits entre branches)
❌
revert
Desfaz um commit criando um novo commit reverso
Não (atua sobre o branch atual)
❌
rebase
Reaplica commits de uma branch sobre outra, reescrevendo o histórico
Não (não permite selecionar commits específicos e não sucessivos de forma direta)
❌
cherry-pick
Aplica um ou mais commits específicos de uma branch em outra
Sim
✅
Alternativa A — ❌ Incorreta
O comando git diff exibe as diferenças entre commits, branches ou o diretório de trabalho e o índice. Ele não aplica nenhuma alteração; apenas mostra o que é diferente. Portanto, não serve para trazer commits de outra branch para a cópia de trabalho.
Alternativa B — ❌ Incorreta
git apply é usado para aplicar um arquivo de patch (gerado por git diff ou git format-patch) no diretório de trabalho. Embora possa aplicar alterações, ele não opera diretamente sobre commits de uma branch para outra e não é a ferramenta adequada para pegar commits específicos entre branches.
Alternativa C — ❌ Incorreta
git revert desfaz um commit criando um novo commit que reverte as alterações. Ele é usado para desfazer mudanças já aplicadas, e não para trazer commits de outra branch. Além disso, atua sobre o branch atual, não busca commits de outra branch.
Alternativa D — ❌ Incorreta
git rebase reaplica commits de uma branch sobre outra, reescrevendo o histórico. Ele é útil para linearizar o histórico, mas quando aplicado sobre uma branch inteira (ou um intervalo de commits), não permite escolher commits específicos e não sucessivos. Para pegar apenas dois commits soltos, o rebase exigiria manipulação mais complexa (como git rebase --onto), enquanto o cherry-pick é direto e simples para esse cenário.
PEGA ESSA DICA!
Para aplicar commits individuais entre branches, use git cherry-pick <commit1> <commit2> .... Se quiser trazer toda uma branch, use git merge ou git rebase. O cherry-pick é ideal quando se deseja apenas algumas alterações pontuais, sem mesclar a branch inteira.
Alternativa E — ✅ Correta ⟵ GABARITO
O comando git cherry-pick é exatamente a ferramenta para essa tarefa. Conforme descrito no material de apoio, "o comando git cherry-pick é usado para aplicar um ou mais commits específicos de uma branch para outra". Com ele, Joana pode executar git cherry-pick <hash-do-commit1> <hash-do-commit2> estando no branch tarefa-um, e os dois commits selecionados do tarefa-dois serão aplicados na sua cópia de trabalho.