Recentemente, tive uma discussão com pessoas absolutamente opostas a uma estratégia de rebase de ramos de recursos no GIT. Parece ser um padrão aceito usar rebase apenas para ramificações locais e privadas, mas nunca usá-lo quando há várias pessoas trabalhando em um mesmo recurso e ramificação, conforme a chamada "Regra de Ouro da Rebasagem" (como explicado aqui: https : //www.atlassian.com/git/tutorials/merging-vs-rebasing/conceptual-overview )
Estou surpreso que haja um consenso sobre isso. Trabalhei 3 anos com uma estratégia de rebaseamento completa, com cerca de 20 desenvolvedores trabalhando juntos e, adivinhem, funcionou.
O processo é basicamente:
- Você cria seu ramo de recursos, vamos chamá-lo de "myfeature" e empurrá-lo para origin / myfeature
- Outras pessoas podem conferir e trabalhar nele
- Às vezes, você pode refazê-lo do master: de "myfeature", git rebase origin / master ; e então, sim, você precisa forçá-lo.
- O que acontece quando outras pessoas querem pressionar seus commits? Eles apenas o refazem: git rebase origin / myfeature . Portanto, eles estão agora avançando rapidamente e podem pressioná-lo sem forçar.
O único princípio a respeitar é que o ramo de recursos pertence a alguém . O proprietário é o único que pode forçar.
Então, admito: assim que houver uma força de empurrão, há o risco de cometer erros. Isso é verdade. Mas também existem muitas maneiras de se recuperar de erros e, realmente, em 3 anos de desenvolvimento, eu não vi muitos erros de força e, quando isso aconteceu, sempre encontramos uma maneira de se recuperar adequadamente.
Então, por que essa "Regra de Ouro da Rebase" está sendo tão amplamente aceita? Há algo mais que eu perdi com isso? Entendo que requer um mínimo de organização (toda estratégia requer alguma organização), mas funciona.