Desenvolve numa branch. Main avançou. Como integrar?
A---B---C main
/
D---E feature-branch2 opções:
Qual escolher? Depende do seu objetivo!
git checkout main
git merge feature-branch A---B---C-------M main
/ /
D---E-----------/ (M = merge commit)git checkout feature-branch
git rebase main A---B---C---D'---E' main| Critério | MERGE | REBASE |
|---|---|---|
| Histórico | Conserva branches paralelas | Lineariza tudo |
| Commits | Acrescenta commit de merge | Reescreve os commits |
| Complexidade | Simples (1 comando) | Mais complexa |
| Conflitos | 1 resolução no máximo | Várias resoluções possíveis |
| Segurança | Muito seguro | Perigoso se mal usado |
| Rastreabilidade | Vê quando as branches foram criadas/fundidas | Perde informação temporal |
| Colaboração | Perfeito em equipa | Atenção aos commits partilhados |
| Legibilidade | Complexa com muitas branches | Muito clara, linear |
Situações:
Comandos:
git checkout main
git pull origin main
git merge feature-branch
git push origin mainSituações:
Comandos:
git checkout feature-branch
git rebase main # Resolver conflitos se necessário
git checkout main
git merge feature-branch # Fast-forward merge
git push origin main
```
### **REGRA DE OURO:**
**NEVER REBASE SHARED COMMITS!**
```bash
# PERIGO - NUNCA faça isto:
git push origin feature-branch # Commits partilhados
git rebase main # Reescreve commits partilhados = CAOS na equipa
# OK - Rebase apenas local:
git rebase main # Commits ainda locais = OK
git push origin feature-branch # Push depois do rebase = OK| Nível | Estratégia recomendada |
|---|---|
| Principiante | Sempre MERGE |
| Intermédio | MERGE para colaboração, REBASE para limpeza local |
| Perito | A equipa decide uma estratégia coerente |
O importante = coerência na equipa, não a perfeição técnica!