J'utilise git sur un nouveau projet qui a deux branches de développement parallèles - mais actuellement expérimentales -:
master
: import de base de code existante plus quelques mods dont je suis généralement sûrexp1
: branche expérimentale # 1exp2
: branche expérimentale # 2
exp1
et exp2
représentent deux approches architecturales très différentes. Jusqu'à ce que je progresse, je n'ai aucun moyen de savoir lequel (le cas échéant) fonctionnera. Au fur et à mesure que je progresse dans une branche, j'ai parfois des modifications qui seraient utiles dans l'autre branche et que je voudrais fusionner uniquement.
Quelle est la meilleure façon de fusionner des changements sélectifs d'une branche de développement à une autre tout en laissant de côté tout le reste?
Approches que j'ai envisagées:
git merge --no-commit
suivi d'une désorganisation manuelle d'un grand nombre de modifications que je ne veux pas rendre communes entre les branches.Copie manuelle des fichiers communs dans un répertoire temporaire, puis
git checkout
pour passer à l'autre branche, puis plus de copie manuelle du répertoire temporaire dans l'arborescence de travail.Une variation de ce qui précède. Abandonnez les
exp
branches pour l'instant et utilisez deux référentiels locaux supplémentaires pour l'expérimentation. Cela rend la copie manuelle des fichiers beaucoup plus simple.
Ces trois approches semblent fastidieuses et sujettes aux erreurs. J'espère qu'il y a une meilleure approche; quelque chose qui ressemble à un paramètre de chemin de filtre qui le rendrait git-merge
plus sélectif.
git merge -s ours --no-commit
suivis par certains ne git read-tree
serait-elle pas une bonne solution pour cela? Voir stackoverflow.com/questions/1214906/…