Skip to content

Commit 508139d

Browse files
Merge pull request #15 from csharpbrasil/posts
Create 2025-07-23-cherry-pick-do-git-arte-de-colher-commits-especific…
2 parents bdc2079 + 6dc0c7b commit 508139d

File tree

1 file changed

+122
-0
lines changed

1 file changed

+122
-0
lines changed
Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
---
2+
title: 'Cherry-pick do Git: A Arte de Colher Commits Específicos'
3+
date: Wed, 23 Jul 2025 10:00:00 +0000
4+
draft: false
5+
tags: ['Git', 'Controle de Versão', 'Cherry-pick', 'Desenvolvimento', 'Versionamento']
6+
---
7+
8+
Já imaginou poder pegar aquele commit específico de uma branch e aplicá-lo em outra, sem todo o drama de um merge completo? É aí que entra o **cherry-pick** do Git – uma ferramenta que é quase como usar uma pinça cirúrgica no seu código.
9+
10+
## O que é Cherry-pick?
11+
12+
O cherry-pick é literalmente "colher cerejas" – você escolhe exatamente qual commit quer aplicar em sua branch atual. É como se você dissesse: "Quero só essa mudança específica, obrigado". Não precisa trazer toda a bagunça junto.
13+
14+
## Quando Usar?
15+
16+
Cenários clássicos onde o cherry-pick brilha:
17+
18+
- **Bug crítico em produção**: Você tem a correção em `develop`, mas não pode fazer merge de tudo
19+
- **Feature específica**: Precisa de uma funcionalidade que está em outra branch, mas o resto não
20+
- **Hotfix seletivo**: Aplicar correções pontuais sem quebrar o fluxo de trabalho
21+
22+
## Como Funciona na Prática
23+
24+
### Comando básico
25+
```bash
26+
git cherry-pick <hash-do-commit>
27+
```
28+
29+
### Exemplo real
30+
```bash
31+
# Você está na branch main e quer um commit da develop
32+
git checkout main
33+
git cherry-pick a1b2c3d4
34+
```
35+
36+
### Cherry-pick múltiplo
37+
```bash
38+
# Vários commits específicos
39+
git cherry-pick a1b2c3d4 e5f6g7h8
40+
41+
# Range de commits
42+
git cherry-pick a1b2c3d4..e5f6g7h8
43+
```
44+
45+
## Lidando com Conflitos
46+
47+
Quando rola conflito (e vai rolar), o Git pausa o processo:
48+
49+
```bash
50+
# Resolver conflitos manualmente nos arquivos
51+
# Depois:
52+
git add .
53+
git cherry-pick --continue
54+
55+
# Ou desistir:
56+
git cherry-pick --abort
57+
```
58+
59+
## Opções Úteis
60+
61+
### Manter referência ao commit original
62+
```bash
63+
git cherry-pick -x a1b2c3d4
64+
```
65+
Adiciona uma linha: `(cherry picked from commit a1b2c3d4)`
66+
67+
### Não committar automaticamente
68+
```bash
69+
git cherry-pick -n a1b2c3d4
70+
```
71+
Útil quando você quer revisar antes de committar.
72+
73+
## Cenário Real: Hotfix em Produção
74+
75+
```bash
76+
# 1. Identificar o commit na develop
77+
git log develop --oneline | grep "fix critical bug"
78+
# 7f8a9b0c fix critical bug in payment validation
79+
80+
# 2. Aplicar na main (produção)
81+
git checkout main
82+
git cherry-pick -x 7f8a9b0c
83+
84+
# 3. Deploy para produção
85+
git push origin main
86+
```
87+
88+
## Pegadinhas a Evitar
89+
90+
### 1. Duplicação de Commits
91+
Cherry-pick cria novos commits com novos hashes. Se depois você fizer merge da branch original, pode rolar duplicação no histórico.
92+
93+
### 2. Perda de Contexto
94+
O commit pode não fazer sentido fora do contexto original da branch.
95+
96+
### 3. Dependências Quebradas
97+
Um commit pode depender de mudanças anteriores que não foram aplicadas.
98+
99+
## Dicas de Sobrevivência
100+
101+
### 1. Use com Moderação
102+
Cherry-pick não é bala de prata. Abuse dele e vai ter um histórico bagunçado que nem você vai entender depois.
103+
104+
### 2. Commits Limpos
105+
Funciona melhor com commits bem definidos e atômicos. Aquele commit gigante com "fix varios bugs" vai dar dor de cabeça.
106+
107+
### 3. Teste Sempre
108+
Nunca assuma que o cherry-pick vai funcionar perfeitamente. Sempre teste depois de aplicar.
109+
110+
## Conclusão
111+
112+
Cherry-pick é aquela ferramenta que você não usa todo dia, mas quando precisa, ela salva a vida. É perfeita para situações específicas onde você precisa de cirurgia, não de machado.
113+
114+
**Pontos-chave:**
115+
- Use para commits específicos, não para integração massiva
116+
- Sempre teste após aplicar
117+
- Cuidado com duplicação no histórico
118+
- Prefira commits atômicos e bem documentados
119+
120+
Lembre-se: com grandes poderes vêm grandes responsabilidades. Use com parcimônia e sempre pense no impacto no histórico do projeto.
121+
122+
E aí, já teve que usar cherry-pick em alguma situação crítica? Conte sua experiência!

0 commit comments

Comments
 (0)