Je fonde mon dépôt Git sur Un modèle de branchement Git réussi et je me demandais ce qui se passe si vous avez cette situation:
Supposons que je développe sur deux branches de fonctionnalités A et B, et B nécessite du code de A. Le nœud X introduit une erreur dans la fonctionnalité A qui affecte la branche B, mais cela n'est pas détecté au nœud Y où les fonctionnalités A et B ont été fusionnées et les tests ont été effectués avant de se ramifier et de travailler sur la prochaine itération.
En conséquence, le bogue est trouvé au nœud Z par les personnes travaillant sur la fonctionnalité B. À ce stade, il a été décidé qu'un correctif de bogue est nécessaire. Ce correctif doit être appliqué aux deux fonctionnalités, car les personnes travaillant sur la fonctionnalité A doivent également corriger le bogue, car cela fait partie de leur fonctionnalité.
Une branche de correction de bogues doit-elle être créée à partir du dernier nœud de la fonctionnalité A (celle qui dérive du nœud Y), puis fusionnée avec la fonctionnalité A? Après quoi les deux fonctionnalités sont fusionnées pour se développer à nouveau et testées avant de se développer?
Le problème est qu'il nécessite que les deux branches fusionnent pour résoudre le problème. Étant donné que la fonctionnalité B ne touche pas le code dans la fonctionnalité A, existe-t-il un moyen de modifier l'historique au nœud Y en implémentant le correctif et en permettant toujours à la branche de la fonctionnalité B de rester non fusionnée tout en conservant le code fixe de la fonctionnalité A?
Légèrement lié: convention de branchement de bogues Git
Réponses:
Utilisez un commit distinct pour corriger le bogue dans une branche, puis choisissez ce commit dans l'autre branche.
la source
On peut dire qu'il n'y a pas de bogue dans A ou X. Corrigez le bogue dans la branche B où il a été trouvé. Le correctif se propagera à X et A dans le cours normal des événements.
la source
Bien que ce ne soit pas un workflow populaire dans
git
, un workflow qui est populaire dans Mercurial serait de mettre à jour vers la révisionX
, d'y corriger le bogue (commeX
2 ) puis de refaire la fusionY
(qui aurait été une paire de fusions dans Mercurial).En fait, ce flux de travail est plus facile
git
car après que tout le monde est passé deY
àY
2, les références à l'originalY
seront perdues et elles seront finalement récupérées. Enhg
vous aurait dû enlever manuellement ces commits pour ranger votre dépôt.la source