Я использую 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/…