Git сливается только из определенной папки

Я создал сайт rails для клиента X. У меня теперь есть клиент Y, который хочет, чтобы веб-сайт выполнял то же самое, что и клиент X, но с другим скином.

Я сделал ветвь git с clientXcode и назвал ее clientYcode. Затем я сделал все изменения в представлениях, чтобы они выглядели по-другому, и лала, тот же сайт с другой кожей.

Теперь я не понимаю о git: я внес много изменений в clientXcode в представлениях, моделях и контроллерах; и теперь я хочу объединить эти изменения в clientYcode, исключая любые изменения вида. Поскольку у моделей, моделей и контроллеров есть своя папка в рельсах, я надеялся сделать что-то вроде:

git merge client_x_code 'app/controllers/*', 'app/models/*'

ВОПРОС 1: Возможно ли что-то подобное с git? Если да, то как мне это сделать?

ВОПРОС 2: Разветвлялось лучшее решение, чтобы сделать копию моего проекта?

Ответ 1

Ну, я нашел самое легкое решение моей проблемы...

git checkout clientYcode
git checkout clientXcode "app/controllers/"
git checkout clientXcode "app/models/"

И это делает то, что я хочу!

Ответ 2

Самый простой способ действий - объединить все, кроме содержимого каталога, который вы хотите сохранить.
Вы можете сделать это, добавив в этот каталог драйвер слияния, в качестве Как сообщить git, чтобы всегда выбирать локальную версию для конфликтующих слияний в определенном файле? вопрос подробности.

С этим драйвером слияния на месте, Ветвление является хорошим решением в этом случае.


Extract:

У нас есть файл .gitattributes, определенный в каталоге dirWithCopyMerge (определенный только в ветке, где происходит слияние: myBranch), и у нас есть файл .git\config, который теперь содержит драйвер слияния.

[merge "keepMine"]
        name = always keep mine during merge
        driver = keepMine.sh %O %A %B