PauloRB.dev

Desenvolvedor de Software

Usando o git cherry-pick no Git: Quando e Como Usar | PauloRB.dev Usando o git cherry-pick no Git: Quando e Como Usar - PauloRB.dev
Usando o git cherry-pick no Git: Quando e Como Usar

Usando o git cherry-pick no Git: Quando e Como Usar

O git cherry-pick é um dos comandos mais poderosos e versáteis no Git, mas muitas vezes é mal compreendido ou subutilizado. Enquanto o comando git merge mescla todas as mudanças de uma branch para outra, o cherry-pick permite que você selecione apenas um commit específico para aplicar em outra branch. Isso pode ser extremamente útil em várias situações do seu dia a dia de desenvolvimento.

Neste post, vamos explorar o que é o git cherry-pick, como ele funciona, e quando você deve considerar usá-lo. Além disso, abordaremos a opção -n, que dá um controle adicional sobre quando e como realizar o commit após aplicar as mudanças de um cherry-pick.

O que é o git cherry-pick?

Na essência, o comando git cherry-pick permite que você aplique as mudanças introduzidas por um ou mais commits específicos de uma branch em outra. Em vez de trazer todas as mudanças, como em um merge, você pode “selecionar” (ou “colher”, como a palavra sugere) commits individuais, transferindo apenas o que for necessário.

O comando básico é bem simples:

Aqui, <commit> representa o hash do commit que você deseja aplicar. O Git vai pegar o conteúdo daquele commit e reaplicá-lo na branch atual, criando um novo commit com um novo hash.

Por que usar o cherry-pick?

Há várias razões pelas quais você pode querer usar o cherry-pick em vez de um merge:

  • Correção de bugs: Imagine que você tenha uma branch de desenvolvimento e uma branch de produção. Um bug foi corrigido em development, mas você precisa aplicar essa correção rapidamente em production. Usar um merge poderia trazer outras mudanças que ainda não estão prontas para produção. Nesse caso, o cherry-pick permite que você selecione apenas o commit que corrige o bug e o aplique diretamente em production.
  • Backporting: Quando você precisa levar uma correção de uma versão mais nova do software para uma versão mais antiga (que ainda está em suporte), o cherry-pick é a solução ideal.
  • Evitar merges complexos: Às vezes, um merge completo pode introduzir conflitos em áreas do código que não são relevantes para o que você precisa. O cherry-pick ajuda a evitar esses problemas ao aplicar mudanças específicas.

Exemplo de uso

Vamos para um exemplo prático. Suponha que você esteja na branch main e quer pegar um commit específico da branch feature:

  1. Identifique o hash do commit que deseja aplicar com git log na branch feature.
  2. Volte para a branch main:

Aplique o commit usando o cherry-pick:

Pronto! O commit abc1234 foi aplicado na branch main.

O que acontece com o histórico?

Um detalhe importante do cherry-pick é que, embora ele aplique as mesmas mudanças, o commit gerado na nova branch terá um hash diferente do original. Isso ocorre porque o Git gera um novo commit com base no estado atual da branch, e não apenas uma cópia exata do commit anterior.

Cherry-pick com múltiplos commits

Você também pode aplicar múltiplos commits de uma vez. Se os commits forem consecutivos, você pode fazer algo assim:

git cherry-pick <commitA>^..<commitB>

Isso aplicará todos os commits entre commitA e commitB.

Usando a opção -n

A opção -n (ou --no-commit) no git cherry-pick oferece ainda mais flexibilidade. Quando você a usa, o Git aplica as mudanças do commit no seu working directory, mas não cria um commit imediatamente. Isso é especialmente útil se você quer fazer mais ajustes ou combinar múltiplos commits antes de finalizar o processo.

Por exemplo:

git cherry-pick -n abc1234

Após rodar esse comando, as mudanças do commit abc1234 estarão no seu diretório de trabalho, mas não será criado um commit. Você pode revisar as mudanças com git status, e quando estiver pronto, pode criar o commit manualmente:

git commit -m "Custom commit message"

Esse método dá um controle muito maior sobre o momento exato de quando as mudanças serão commitadas. É útil em situações onde você quer mesclar várias mudanças em um único commit, ou onde precisa fazer alterações adicionais antes de finalizar.

Quando evitar o cherry-pick?

Embora o cherry-pick seja incrivelmente útil, ele pode complicar o histórico do Git se usado incorretamente. Por exemplo, ao cherry-pick múltiplos commits e, mais tarde, realizar um merge entre as branches, você pode acabar com commits duplicados no histórico, tornando-o mais difícil de entender.

Por isso, use o cherry-pick com moderação e evite em situações onde um merge seria mais apropriado.

Conclusão

O git cherry-pick é uma ferramenta poderosa, ideal para situações onde você precisa aplicar mudanças específicas entre branches sem realizar um merge completo. Com a opção -n, você ganha ainda mais controle, podendo aplicar as mudanças sem criar um commit automaticamente, o que é perfeito para casos em que você precisa de flexibilidade antes de finalizar o processo.

Ao entender bem como o cherry-pick funciona e quando usá-lo, você poderá otimizar ainda mais o seu fluxo de trabalho no Git, tornando o gerenciamento de commits e branches mais eficaz e preciso.

Se você nunca usou o git cherry-pick, agora é o momento de experimentá-lo e ver como ele pode te ajudar a lidar com commits de forma muito mais refinada no seu repositório!

Mais Posts

Manipulando Strings em GOLANG

Manipulando Strings em GOLANG

Resolvi retormar meus estudo em Go Lang e assim vamos ao primeiro post dessa série de estudos onde vamos aprender... Leia mais

Programação Funcional no Elixir: Fundamentos e Exemplos

Programação Funcional no Elixir: Fundamentos e Exemplos

A programação funcional está se tornando cada vez mais popular devido à sua simplicidade e capacidade de lidar com paralelismo... Leia mais

A função WITH RECURSIVE no PostgreSQL

A função WITH RECURSIVE no PostgreSQL

A função WITH RECURSIVE no PostgreSQL é uma ferramenta poderosa para a execução de consultas recursivas em bancos de dados.... Leia mais

Formas de Paginação de Dados no Laravel

Formas de Paginação de Dados no Laravel

No desenvolvimento de aplicações web, a paginação de dados é um recurso fundamental quando se trabalha com grandes volumes de... Leia mais