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
exp1et exp2repré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-commitsuivi 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 checkoutpour 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
expbranches 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-mergeplus sélectif.
git merge -s ours --no-commitsuivis par certains ne git read-treeserait-elle pas une bonne solution pour cela? Voir stackoverflow.com/questions/1214906/…