gitattributes неправильно устанавливает драйвер слияния

У меня есть следующая структура каталогов:

project/
    .git/
        ...
    app/
        ...
    config/
        initializers/
            braintree.rb
        environments/
            production.rb
    .gitattributes

В моем проекте используются две основные ветви: основная и промежуточная, каждая из которых отслеживает разные пульты (приложения для производства и постановки герои).

Идея состоит в том, что промежуточная ветвь движется вперед с новыми функциями, они передаются и тестируются на промежуточном пульте, затем мастер быстро пересылается в соответствии с промежуточной подготовкой и передается на производственный пульт.

Вот что я хочу сделать: свободно объединить эти две ветви, сохранив их версии 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. Любая помощь будет принята с благодарностью.

1 ответ

Решение

Есть два отличных ответа переполнения стека, которые решают эту проблему:

Как мне сказать git всегда выбирать мою локальную версию для конфликтующих слияний в конкретном файле?

а также

.gitattributes & отдельная стратегия слияния для файла

Я бы посоветовал прочитать верхний ответ в первой ссылке. Это долго, но очень подробно и информативно.

Другие вопросы по тегам