У меня есть следующая структура каталогов:
project/
.git/
...
app/
...
config/
initializers/
braintree.rb
environments/
production.rb
.gitattributes
В моем проекте используются две основные ветки: master и staging, каждая из которых отслеживает разные удаленные приложения (рабочие и промежуточные приложения heroku).
Идея состоит в том, что промежуточная ветвь продвигается вперед с новыми функциями, они отправляются и тестируются на промежуточном удаленном сервере, затем мастер быстро перематывается вперед, чтобы соответствовать промежуточному этапу, и отправляется на рабочий удаленный сервер.
Вот что я хочу сделать: свободно объединить эти две ветки, сохраняя их версии braintree.rb
и production.rb
отдельными.
Для этого вот что я вставил в .gitattributes
(согласно книге ProGit):
config/initializers/braintree.rb merge=ours
config/environments/production.rb merge=ours
Файл присутствует в обеих ветках.
Проблема, с которой я сталкиваюсь, заключается в том, что это, похоже, ни на что не влияет. Всякий раз, когда я объединяюсь между ними, файлы все равно меняются, и мне приходится снова их менять.
У меня такое чувство, что я упускаю что-то ужасно очевидное, но пока это ускользает от меня. Я знаю, что другие ответы здесь включали создание пользовательских драйверов слияния, но в книге ProGit этот процесс не упоминается и, похоже, подразумевается, что драйвер ours
встроен (и я видел, что он упоминается на страницах руководства, поэтому я м относительно уверен, что это так). Единственная другая вещь, о которой я могу думать, это то, что я каким-то образом поместил .gitattributes
в неправильное место или перепутал его содержимое, но я не могу найти много информации об этом. Я пытался переместить его в тот же каталог, что и файлы, но безрезультатно.
Если это поможет, я запускаю git версии 1.7.2 на OS X. Любая помощь будет очень признательна.