Estou usando o git em um novo projeto que possui dois ramos de desenvolvimento paralelos - mas atualmente experimentais:
master
: importação da base de código existente mais alguns mods dos quais geralmente tenho certezaexp1
: ramo experimental nº 1exp2
: ramo experimental nº 2
exp1
e exp2
representam duas abordagens arquitetônicas muito diferentes. Até me aprofundar, não tenho como saber qual deles (se é que existe) irá funcionar. À medida que progrido em uma ramificação, às vezes tenho edições que seriam úteis na outra ramificação e gostaria de mesclar apenas essas.
Qual é a melhor maneira de mesclar mudanças seletivas de um ramo de desenvolvimento para outro, deixando para trás todo o resto?
Abordagens que considerei:
git merge --no-commit
seguido pela desagregação manual de um grande número de edições que eu não quero tornar comum entre as ramificações.Cópia manual de arquivos comuns em um diretório temporário, seguida por
git checkout
para mover para a outra ramificação e, em seguida, mais cópia manual do diretório temporário para a árvore de trabalho.Uma variação acima. Abandone as
exp
ramificações por enquanto e use dois repositórios locais adicionais para experimentação. Isso torna a cópia manual de arquivos muito mais simples.
Todas essas três abordagens parecem tediosas e propensas a erros. Espero que exista uma abordagem melhor; algo semelhante a um parâmetro do caminho do filtro que tornaria git-merge
mais seletivo.
git merge -s ours --no-commit
seguidos por alguns não git read-tree
seria uma boa solução para isso? Veja stackoverflow.com/questions/1214906/…