2010-07-26 12 views
0

J'ai donc créé une nouvelle branche à partir de master et finalement fusionner les modifications en arrière, seulement quelques changements semblaient fusionner et il semblerait que j'ai fusionné dans une direction. Finalement, j'ai juste décidé de m'assurer que le maître recevait tous les changements «expérimentaux», puis j'ai supprimé la branche expérimentale et en ai fait une nouvelle. Donc, cette question se transforme soudainement en quelques questions:Existe-t-il un moyen approprié de «synchroniser» les branches et de les garder séparées?

1) Comment faire correspondre les branches mais les garder séparées? 1a) Est-ce une mauvaise pratique de ne pas créer une nouvelle branche?

2) Pourquoi les branches n'étaient-elles pas les mêmes après une fusion? 2a) Suis-je seulement supposé appeler une fusion sur celui que je veux avoir tous les changements?

Répondre

1

En ce qui concerne la pratique, une fusion est certainement une opération à sens unique. Il fusionne une branche dans une autre. L'histoire résultant après la fusion expérimentale en maître ressemblerait à ceci:

- o - o - o - o - o - X (master) 
    \    /
    o - o - o - o - o (experimental) 

Ainsi, après une fusion, maître contient toutes les modifications apportées dans experimental, mais ils ne sont manifestement pas les mêmes.

Je suis un peu confus au sujet de ce que vous entendez exactement par "correspondre mais garder séparé". Il est courant de créer une branche de sujet dans un but spécifique (fonctionnalité, correction de bogue ...), puis de la fusionner partout où cette entité est nécessaire. Par exemple, une correction de bogue pourrait appartenir à deux anciennes versions de maintenance ainsi qu'au maître actuel, de sorte qu'elle serait fusionnée dans les trois versions.

Je pense que this post sur le blog de Junio ​​Hamano (il est le mainteneur actuel de git) est l'une des meilleures explications que j'ai trouvées exactement quand vous devriez fusionner, et quand vous ne devriez pas. Cela devrait répondre à la majeure partie de vos questions philosophiques.

+0

Je pense que je vois ce que vous voulez dire. Par match et garder séparés je voulais dire que je voudrais synchroniser leur code et ensuite continuer à courir avec le "expérimental" car j'ai encore des expériences à poursuivre, mais j'ai fait un changement assez large sur le maître que ce serait blasphématoire Continuez à être sûr d'avoir le même code. Merveilleux post, c'est et va beaucoup éclaircir pour moi. – jphenow

+0

@jphenow: Dans ce cas, vous devriez conserver la branche expérimentale même après avoir fusionné en master (par exemple, git checkout master, git merge experimental, git checkout experimental). Cependant, je vous déconseille d'utiliser une seule branche d'expérimentation pour une variété d'expériences - ils devraient vraiment être sur leurs propres branches, de sorte que vous pouvez les fusionner séparément. – Cascabel

+0

Oh bien sûr - J'ai une branche différente pour chaque sujet d'expérience, mais j'ai regardé chaque branche et il semblait que quelque chose était changé sur le master qui rendrait terriblement bizarre de continuer sur l'expérimental sans obtenir quelques changements de master. – jphenow