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