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