Можно ли сказать git игнорировать определенные строки при выполнении слияния или перебазирования?

Допустим, у меня есть происхождение, называемое myorigin, и клон, называемый myclone. Я хочу, чтобы myclone обновлялся с учетом изменений myorigin. В myorigin у меня есть файл, содержимое которого:

Name: myorigin
some text
some more text

и после клонирования я изменяю этот файл в myclone следующим образом:

Name: myclone
some text
some more text

Когда в myclone я делаю:

git fetch
git merge origin

он скажет мне, что есть конфликты.

Есть ли способ заставить git игнорировать определенные строки?

Должен ли я подходить к этому по-другому?


person Alvaro    schedule 10.01.2017    source источник
comment
Конфликт — это ситуация, когда изменения в объединенных ветвях нельзя безопасно объединить, обычно потому, что они изменяют одну и ту же строку (строки) или противоречат друг другу. Для разрешения конфликта требуется вмешательство человека. Человек может принять решение сохранить одну из двух версий и отказаться от другой или вручную объединить изменения из обеих ветвей.   -  person axiac    schedule 10.01.2017
comment
@axiac Спасибо. Но мне пришлось бы вручную принимать одну из двух версий каждый раз, когда я сливаюсь, мне было интересно, есть ли какой-то способ сделать это, вроде как! работает для комментариев js или другого подхода.   -  person Alvaro    schedule 10.01.2017
comment
Если у вас возникают конфликты при каждом слиянии, проблема в другом. Может файл вообще не надо класть в репозиторий. Это файл конфигурации или почему у вас возникают конфликты при каждом слиянии?   -  person axiac    schedule 11.01.2017
comment
@axiac Я пытаюсь найти способ справиться с фреймворком и создать на его основе другие репозитории, вы можете точно увидеть, что я намереваюсь, из этого вопрос. Но я думаю, мне придется держать вещи отдельно. Спасибо :)   -  person Alvaro    schedule 11.01.2017


Ответы (1)


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

Как правило, любые «конфигурационные» данные не должны передаваться в исходный репозиторий. Вместо этого, если это уместно, исходный репозиторий должен содержать пример конфигурации, а фактическая конфигурация хранится в другом месте (либо .gitignore-d, либо полностью за пределами рабочего дерева).

Если конфигурации необходимо обновить, когда пользователь переходит с «FooBarix версии 1.3» на «FooBarix версии 2.0», версия 2.0, вероятно, должна включать программу миграции конфигурации, которая запускается во время обновления, сохраняет исходную конфигурацию и переключается на новую. конфигурация (ни одна из которых не контролируется исходным кодом как часть самого FooBarix). Это также дает возможность понизить конфигурацию, если возникнет необходимость вернуться с версии 2.0 к версии 1.3.

person torek    schedule 10.01.2017