À medida que ciência de dados, engenharia de dados e aprendizado de máquina se tornam onipresentes em praticamente todas as operações do dia a dia de um negócio, os profissionais de dados não podem mais trabalhar no vácuo. Em vez disso, precisam atuar lado a lado com desenvolvedores de software para tornar projetos de data science realmente operacionais e escaláveis. Isso significa incorporar novas ferramentas do ecossistema de desenvolvimento de software ao seu conjunto de habilidades — e uma delas é o Git.
Git é uma ferramenta open source de controle de versão, criada para gerenciar o histórico de mudanças. Ela permite que desenvolvedores e profissionais de dados acompanhem de forma eficiente as alterações em arquivos de projeto, como scripts em Python e conjuntos de dados, para que todos tenham um registro do que mudou, sincronizem tarefas e colaborem sem perder informação. Um ótimo ponto de partida com Git é nosso curso Introduction to Git.
Um dos recursos centrais do Git é a possibilidade de usar branches. Branches permitem manter várias versões do projeto e acompanhar cada uma de forma sistemática. Em algum momento, você pode precisar integrar o progresso feito em uma branch dentro de outra. Existem diferentes estratégias para combinar branches, incluindo os comandos git merge e git rebase.
O objetivo deste artigo é apresentar o git rebase, um comando que ajuda a integrar branches movendo uma sequência de commits de uma branch de origem para o topo de uma branch de destino — normalmente, a main.
Entendendo o Git Rebase
Imagine que você está trabalhando em um projeto de ciência de dados com outras pessoas e ficou responsável por desenvolver um dashboard no PowerBI com base em dados coletados em commits anteriores.
Como você será a pessoa principal nesse dashboard, faz sentido criar uma branch dedicada. Enquanto isso, o restante do time pode continuar atualizando a branch main com novos commits. A situação fica assim:

Figura 1. Fonte
Agora imagine que os commits mais recentes na main são relevantes para a sua branch. Por exemplo, podem ter adicionado novos datasets que enriquecem seu dashboard. Nesse caso, você precisa incorporar esses commits novos na sua branch. Há duas formas de fazer isso: merge ou rebase.
Se você combinar as branches usando o comando git merge, criará um novo commit de merge na sua branch que mistura as mudanças mais recentes feitas na main com as mudanças da sua branch.

Figura 2. Fonte
git merge é uma operação não destrutiva, ou seja, o histórico de ambas as branches não muda. Isso é bom para rastreabilidade, mas também adiciona complexidade, já que você pode ter que incluir continuamente novos commits da main, especialmente se ela estiver bem ativa. Também pode resultar em conflitos de merge, como explicamos neste artigo sobre como resolver conflitos de merge.
Por outro lado, se você usar git rebase, moverá toda a sua branch para o topo da main. Essa operação reescreve o histórico do projeto inserindo novos commits para cada commit que você criou na sua branch. O resultado fica assim:

Figura 3. Fonte
git rebase é uma ótima opção para manter o projeto organizado. Ao mover a branch de feature para a ponta da main, o histórico do projeto muda e fica perfeitamente linear — bem mais fácil de navegar. O rebase também elimina a necessidade daqueles commits extras de merge exigidos pelo git merge.
No entanto, o git rebase também traz possíveis conflitos e armadilhas. Como ele altera o histórico de commits e não cria commits de merge, pode ficar difícil identificar quando as mudanças do rebase foram incorporadas, comprometendo a rastreabilidade. Mais importante ainda: se, por engano, o rebase provocar mudanças na main e você der push para o repositório remoto, isso pode gerar alterações inesperadas que conflitam com o trabalho de outras pessoas. Por isso, use o git rebase com cuidado e apenas em situações específicas.
Vamos ver agora como o git rebase funciona na prática!
Executando o Git Rebase
Para ilustrar como o git rebase funciona, vamos replicar o exemplo da seção anterior. Se você trabalha em um projeto colaborativo, a primeira coisa a fazer é buscar e baixar o conteúdo do repositório remoto onde o projeto está hospedado (normalmente na nuvem ou em um servidor remoto) e atualizar seu repositório local com as últimas mudanças, para ficar alinhado com o time. Isso pode ser feito com o comando git pull, que você roda no terminal:
git pull
Agora você está pronto para criar uma nova branch onde vai trabalhar no dashboard do PowerBI. Use o comando abaixo:
git checkout -b powerbi_dashboard
Depois de criar a nova branch, você começa a trabalhar e registra o progresso com vários commits. Por exemplo, faz um novo commit após montar os gráficos que vão aparecer no dashboard.
git add .
git commit -m "powerbi_dashboard/add_plots"
Enquanto isso, seus colegas fazem novos avanços na branch main que são relevantes para o seu projeto de dashboard. De novo, a primeira coisa a fazer é rodar git pull para trazer as atualizações do repositório remoto e copiá-las para o seu repositório local. Isso resultará na situação descrita na Figura 1.
A partir daí, você pode escolher entre git merge ou git rebase. Se optar pelo segundo, basta rodar git rebase para mover sua branch para o topo da main.
git checkout -b powerbi_dashboard
git rebase main
Rebase interativo
Se nenhuma informação adicional for fornecida, o git rebase vai transpor todos os commits da sua branch para a cabeça da main. Porém, você pode usar o modo interativo se quiser mais controle sobre como os commits serão movidos. Isso permite limpar seu histórico de commits antes de mover a branch para a main, aumentando a clareza.
Para iniciar um rebase interativo, adicione a opção -i ao comando git rebase:
git checkout -b powerbi_dashboard
git rebase -i main
Isso abrirá um editor onde você pode alterar o comportamento do Git para cada commit que deseja rebasear. Algumas opções disponíveis incluem alterar mensagens de commit, juntar commits e remover commits. A lista completa está na documentação do Git. Veja abaixo como o editor aparece:
pick 46s9451 powerbi_dashboard/add_plots #manter commit
reword 94561f6 powerbi_dashboard/set_data_connectors #editar mensagem do commit
drop 1f094y8 powerbi_dashboard/minor_changes #remover commit
Boas práticas de Git Rebase
git rebase é útil, mas pode gerar confusão se usado nos cenários errados. Como regra geral, use git rebase apenas em repositórios locais.
Em especial, o git rebase é muito prático quando você trabalha em uma branch dedicada para desenvolver um recurso específico. Nesse contexto, ele ajuda a manter seu histórico de commits limpo e linear, facilitando a vida de quem vai acompanhar seu progresso quando você fizer push para o repositório remoto.
Ainda assim, você pode encontrar conflitos de merge durante o fluxo de rebase, principalmente se ficar muito tempo sem incorporar os commits do pessoal na main.
Essa situação — em que sua branch entra em conflito com os commits mais recentes da main — pode ser evitada se você rebasear sua branch com frequência contra a main. Assim, você garante que está sempre na mesma página.
Por fim, prevenir é melhor do que remediar. Antes de considerar o git rebase, alinhe com o restante do time para receber diretrizes de como e onde usá-lo.
Conclusão
Você chegou ao fim do tutorial. Parabéns! O git rebase é um comando que vale a pena incluir nos seus fluxos de trabalho com Git. Mas há muito mais para aprender sobre Git, uma ferramenta indispensável para desenvolvedores e profissionais de dados.
Abaixo estão alguns recursos da DataCamp para você dominar Git. Aproveite!
Sou analista de dados freelancer, colaborando com empresas e organizações em todo o mundo em projetos de ciência de dados. Também sou instrutor de ciência de dados com mais de 2 anos de experiência. Escrevo regularmente artigos relacionados à ciência de dados em inglês e espanhol, alguns dos quais foram publicados em sites consagrados, como DataCamp, Towards Data Science e Analytics Vidhya Como cientista de dados com formação em ciência política e direito, meu objetivo é trabalhar na interação de políticas públicas, direito e tecnologia, aproveitando o poder das ideias para promover soluções e narrativas inovadoras que possam nos ajudar a enfrentar desafios urgentes, como a crise climática. Eu me considero uma pessoa autodidata, um aprendiz constante e um firme defensor da multidisciplinaridade. Nunca é tarde demais para aprender coisas novas.

