Как вытянуть изменения поддиректории git-репозитория, применив удаленную версию файлов?

Есть некий проект, который имеет следующую структуру:
project
     |----data
             |----1.xml
             |----2.xml
     |----subprojects
             |----subproject1
             |----subproject2

где subproject1 и subproject2 имеют такую же структуру, как и project.
Все это лежит в git-репозитории. Директория data содержит файлы xml, которые фактически являются текстовыми файлами, но рассматриваются они, как бинарные. Т.е. мне нельзя их мержить, а нужно при обновлении просто накатывать те версии, которые находятся в удаленном репозитории.
Собственно в этом и заключается задача: вытянуть изменения директории data для какого либо проекта (как корневого так и дочернего) так чтобы полностью накатилась удаленная версия?
Пока что получилось сделать это следующим способом.
git rm -r ${projectDir}/data
git read-tree --prefix=${projectDir}/data/ -u origin/master:${projectDir}/data
git commit -m "Updated ${projectName}"

но он не подходит, потому что библиотека, которую я использую для работы с git-ом, не поддерживает команду read-tree.
Да, этот способ работает, но мне кажется, что есть способ более цивильный для решения такой задачи. Например, в файле .gitattributes для незаменяемых файлов указать стратегию слияния merge=ours, а для заменяемых - recursive -Xtheirs. merge=ours я указать могу, но как в .gitattributes указать опции для стратегии recursive?
  • Вопрос задан
  • 2301 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы