2010-04-08 12 views
8

J'ai un scénario suivant:ramification Git/rebasage bonnes pratiques

3 branches:
- Master
- MyBranch bifurque maître dans le but de développer une nouvelle fonctionnalité du système
- MyBranchLocal bifurqué MyBranch en tant que copie locale de la branche

MyBranch est rebasé contre et poussé par d'autres développeurs (qui travaillent sur la même fonctionnalité que moi).

En tant que propriétaire de la branche MyBranch, je souhaite la synchroniser avec Master par rebasage. Je dois également fusionner les modifications que je fais à MyBranchLocal avec MyBranch.

Quelle est une bonne façon de faire cela?

Couple de scénarios possibles, j'ai essayé jusqu'à présent:

I.
1. Engagez changement
MyBranchLocal 2. Rebase MyBranch contre Maître
3. Rebase MyBranchLocal contre MyBranch
4. Fusion MyBranch avec MyBranchLocal

II.
1. Engagez modification MyBranchLocal
2. MyBranch de fusion avec MyBranchLocal
3. Rebase MyBranch contre Maître
4. Rebase MyBranchLocal contre MyBranch

III.
1. Engagez modification MyBranchLocal
2. Rebase MyBranch contre Maître
3. MyBranch de fusion avec MyBranchLocal
4. Rebase MyBranchLocal contre

MyBranch

Je sais déjà que le scénario III semble être l'histoire de déconner commettras up beaucoup, potentiellement en double commet.

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

Répondre

4

Ma suggestion personnelle. Celui-ci est axé sur un historique de commit direct, et échoue sur les branches "plus spécifiques" (vous feriez mieux de désordonner votre branche locale que la branche feature).

  1. Commit changement
  2. MyBranchLocal
  3. Rebase MyBranchLocal contre
  4. MyBranch
  5. Fusion MyBranch avec MyBranchLocal (devrait être rapide) - MyBranch = Local
  6. Rebase MyBranch contre Maître
    1. (en option) Fusion Maître avec MyBranch (devrait également être en avance rapide)
  7. Rebase MyBranchLocal contre MyBranch
4

J'ai trouvé cette question après lien avec Linus email. Selon l'email - vous ne devriez pas rebaser après que vous ayez 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 pour MyBranch (partagé avec d'autres développeurs) ne l'est pas.