J'ai eu une discussion récemment avec des gens absolument opposés à une stratégie de rebase des branches de fonctionnalités sur GIT. Cela semble être un modèle accepté d'utiliser uniquement le rebasage pour les branches locales et privées, mais ne l'utilisez jamais lorsqu'il y a plusieurs personnes travaillant sur une même fonctionnalité et branche, selon cette soi-disant "règle d'or de la refondation" (comme expliqué ici: https : //www.atlassian.com/git/tutorials/merging-vs-rebasing/conceptual-overview )
Je suis juste surpris qu'il y ait un consensus à ce sujet. J'ai travaillé 3 ans avec une stratégie de rebasage complète, avec environ 20 développeurs travaillant ensemble et devinez quoi, cela a fonctionné.
Le processus est essentiellement:
- Vous créez votre branche de fonctionnalité, appelons-la "myfeature" et poussez-la vers origin / myfeature
- D'autres personnes peuvent le vérifier et y travailler
- Vous pouvez parfois le rebaser depuis master: depuis "myfeature", git rebase origin / master ; et puis, oui, vous devez pousser la force.
- Que se passe-t-il lorsque d'autres personnes veulent pousser leurs commits? Ils le rebasent simplement: git rebase origin / myfeature . Ils sont donc maintenant en avance rapide et peuvent le pousser sans forcer.
Le seul principe à respecter est que la branche de fonctionnalité appartient à quelqu'un . Le propriétaire est le seul à pouvoir pousser.
Donc, j'avoue: dès qu'il y a une force de poussée, il y a un risque de faire des erreurs. C'est vrai. Mais il y a aussi de nombreuses façons de se remettre des erreurs, et vraiment, en 3 ans de développement, je n'ai pas vu beaucoup d'erreurs poussant la force, et quand cela se produisait, nous avons toujours trouvé un moyen de récupérer correctement.
Alors, pourquoi cette "règle d'or du rebase" est-elle si largement acceptée? Y a-t-il autre chose que j'ai manqué avec ça? Je comprends que cela nécessite un minimum d'organisation (chaque stratégie nécessite une certaine organisation), mais cela fonctionne.