Я использую git для нового проекта, который имеет две параллельные - но в настоящее время экспериментальные - ветки разработки:
-
master
: импорт существующей кодовой базы плюс несколько модов, в которых я обычно уверен -
exp1
: экспериментальная ветка # 1 -
exp2
: экспериментальная ветка № 2
exp1
и exp2
представляют два очень разных архитектурных подхода. Пока я не продвинусь дальше, у меня нет никакого способа узнать, какой из них (если любой) будет работать. Поскольку я делаю успехи в одной ветки, у меня иногда есть изменения, которые были бы полезны в другой ветки и хотели бы объединить только те.
Каков наилучший способ объединения выборочных изменений из одной ветки разработки в другую, оставляя после себя все остальное?
Подходы, которые я рассмотрел:
-
git merge --no-commit
последующей ручной постановкой большого количества правок, которые я не хочу делать общими для ветвей. -
Ручное копирование общих файлов во временный каталог с последующей
git checkout
для перемещения в другую ветвь и затем более ручное копирование из временного каталога в рабочее дерево. -
Вариация на выше. Оставьте сейчас ветки
exp
и используйте два дополнительных локальных репозитория для экспериментов. Это делает ручное копирование файлов намного проще.
Все три из этих подходов кажутся утомительными и подверженными ошибкам. Я надеюсь, что есть лучший подход; что-то похожее на параметр пути фильтра, что сделало бы git-merge
более избирательным.