Git ramification / rebasage de bonnes pratiques

j'ai un scénario suivant:

3 branches:

- Master

- MyBranch ramifiée de Master dans le but de développer une nouvelle fonctionnalité du système

- MyBranchLocal ramifié au loin MyBranch comme ma copie locale de la branche

MyBranch est relocalisée contre et poussé par d'autres développeurs qui travaillent sur la même fonctionnalité que je suis).

en tant que propriétaire de la branche MyBranch, je veux la garder en phase avec Maître en la rebasant. Je dois également fusionner les changements que je fais à MyBranchLocal avec MyBranch.

Quelle est la bonne façon de faire cela?

quelques scénarios possibles que j'ai essayé jusqu'à présent:

I.

1. Engageons le changement de MyBranchLocal

2. Rebase MyBranch contre maître

3. Rebase MyBranchLocal contre MyBranch

4. Fusionner MyBranch avec MyBranchLocal

II.

1. Engageons le changement de MyBranchLocal

2. Fusionner MyBranch avec MyBranchLocal

3. Rebase MyBranch contre maître

4. Rebase MyBranchLocal contre MyBranch

III.

1. Engageons le changement de MyBranchLocal

2. Rebase MyBranch contre maître

3. Fusionner MyBranch avec MyBranchLocal

4. Rebase MyBranchLocal contre MyBranch

je sais déjà que le scénario III semble bouleverser l'histoire de la propagation, dupliquant potentiellement les propagations.

Quelle est votre expérience? Quels scénarios recommandez-vous pour minimiser l'effort de fusion et garder l'histoire propre?

9
demandé sur Paweł Krupiński 2010-04-08 21:13:30

2 réponses

ma suggestion personnelle. Celui-ci est centré sur une histoire de commit droite, et un échec sur les branches "plus spécifiques" (vous feriez mieux de gâcher votre branche locale que la branche feature).

  1. valider la modification MyBranchLocal
  2. Rebase MyBranchLocal against MyBranch
  3. fusionner MyBranch avec MyBranchLocal ( devrait être fast forward) - MyBranch = Local
  4. Rebase MyBranch against Maître
    1. (en option) Fusion de Maître avec MyBranch (devrait également être en avance rapide)
  5. Rebase MyBranchLocal against MyBranch
4
répondu Samuel Carrijo 2010-04-08 20:28:39

j'ai trouvé cette question après lien vers Linus email . Selon l'email - vous ne devriez pas rebase après que vous avez publié votre histoire dans un site public, parce que vous pourriez détruire l'histoire d'autres personnes. Donc, rebase pour MyBranchLocal est OK, mais pas pour MyBranch (partagé avec d'autres développeurs).

4
répondu Vadim Ponomarev 2012-04-09 08:04:38