Faça rebase da sua própria branch de feature sobre a branch principal para manter o histórico linear e resolver conflitos em doses pequenas antes do review. Faça merge ao integrar essa branch numa branch compartilhada, e nunca faça rebase de uma branch que outras pessoas já baixaram, porque reescrever histórico compartilhado força todo mundo a uma recuperação. Em resumo: rebase em trabalho privado, merge em trabalho público, e squash quando o histórico de commits não acrescenta nada para quem ler depois.
Por que os entrevistadores perguntam isso
O uso de Git conta ao entrevistador como você trabalha com outras pessoas. Eles querem a regra de histórico privado versus compartilhado, o entendimento de que rebase reescreve commits em vez de movê-los, e pragmatismo sobre convenção de time. Quem insiste numa estratégia única em todo lugar, ou não consegue explicar por que um force push numa branch compartilhada causa dano, tende a criar atrito num time.
Como estruturar sua resposta
- Diga a regra de branch privada versus compartilhada.
- Explique o que o rebase de fato faz com os ids de commit.
- Diga quando você faria squash em vez disso.
- Ceda à convenção do time onde ela existir.
Exemplo de resposta
Minha regra é rebase em histórico privado, merge em histórico compartilhado. Enquanto uma branch de feature é minha, eu faço rebase dela sobre a main com frequência, porque isso mantém o diff honesto e eu prefiro bater em conflitos em três doses pequenas do que numa enorme no fim. Quando ela entra na main eu faço merge, geralmente com squash, porque ninguém lendo o log daqui a seis meses quer os meus commits de corrigir typo. O que eu não vou fazer é rebase numa branch que outra pessoa já baixou, já que o rebase não move commits, ele cria novos com hashes novos, e a cópia dos originais de todo mundo fica órfã. Isso significa um force push e alguém perdendo trabalho. Já tive que guiar um colega pelo reflog para se recuperar exatamente disso. Além da regra, eu sigo o que o time já faz, porque um histórico consistente que todo mundo entende vale mais que a minha preferência pessoal, e essa não é uma briga que valha a pena comprar em code review.
Vai encarar essa entrevista em breve? O GhostPilot escuta a sua chamada ao vivo, identifica a pergunta no instante em que ela é feita e coloca uma resposta estruturada na sua tela em tempo real. Teste na sua próxima entrevista simulada ou pegue um Session Pass de $29, sem assinatura, para a hora da verdade.
Veja como funcionaPerguntas de acompanhamento que você pode esperar
- Como você recuperaria um commit perdido depois de um rebase ruim?
- O que um rebase interativo te deixa limpar?
- Como você lida com uma branch de vida longa que ficou muito defasada?
Mais perguntas para Engenheiro de Software
Seu entrevistador vai fazer a própria versão desta. Cole a descrição real da vaga no Question Predictor gratuito e receba as 20 perguntas que essa vaga tem mais chance de fazer, com o que cada uma está de fato sondando.
Prever minhas perguntas