2010-03-17 6 views
1

J'ai plusieurs branches définies pour le projet en cours où toutes les branches sauf la branche master diffèrent du master uniquement par le même petit jeu de fichiers (moins de dix). Après l'implémentation d'une nouvelle fonctionnalité dans master, je souhaite répliquer ces modifications et ajouts aux autres branches avec le moins d'effort possible. Quelle est l'approche recommandée ici?Synchronisation de deux branches GIT qui ne diffèrent que par quelques fichiers

+2

Quel est le problème avec 'git merge master'? Voulez-vous juste un moyen d'exécuter cela pour plusieurs branches dans une commande? –

+0

@Jimmy, s'il vous plaît vérifier le deuxième paragraphe dans ma réponse. Et laissez-moi savoir ce que vous en pensez. –

Répondre

2

Vous avez trois choix:

  • merge: intéressant si tous les changements de maître doivent être visibles dans une branche, mais ce n'est pas toujours le cas

  • cherry-pick: appliquer seulement certains commettre à une branche

  • : la meilleure solution si votre branche n'a pas encore été poussée: vous rejouez il commit de votre branche au-dessus du maître

Mais: dans les trois cas, vous avez besoin à la caisse de la branche où vous souhaitez intégrer les changements, et répéter que pour chaque branches.

À moins que vos branches sont faites de l'un à l'autre:

---o    branch B1 
    \ 
    ----o  branch B2 
      \ 
      ----o branch B3 

Dans ce cas, vous pouvez:

  • ne fusionner les modifications apportées à la branche la plus spécifique (B3 ici), terminez votre travail sur B3
  • puis fusionnez sur la branche parente B2 (si aucune évolution n'a eu lieu) sur B2, c'est en fait une fusion avance rapide)
  • répétition pour B1 (qui est: terminer votre travail sur B2, git checkout B1, git merge B2)
0

Normalement, lorsque je fixe une chose importante sur une branche (peut même être maître), et si je veux la même solution à répliquer à une autre branche, je fais git checkout my_latest_feature et git merge --no-commit master

jamais essayé cherry-pick, mais je pense que, thats la meilleure façon que je suppose, comme écrémer ne fusionner ce changement spécifique et git merge --no-commit master va essayer d'obtenir l'arbre entier (même d'autres commits en plus du dernier correctif). Je déteste toujours toute commande qui altère l'historique de validation. Cest la raison pour laquelle je ne rebase

Mise à jour: juste a trouvé cette même question: How to copy commits from one branch to another?

Questions connexes