Игнорировать некоторые файлы при слиянии веток

У меня есть две ветки master и develop. Каждая ветвь содержит один и тот же файл с именем «db.config», имеющий отдельные учетные данные базы данных для производства (мастер) и подготовки (разработки).

В основной ветке также есть файл .gitattributes , в котором я определил стратегию merge=ours для db.config.

.gitатрибуты

db.config merge=ours

Когда я объединяю ветку develop с веткой master, создавая запрос на вытягивание в битбакете, изменения в ветке разработки также попадают в master после слияния для db.config. Похоже, файл .gitattributes у меня не работает.

Также у меня не работает та же проблема с stackoverflow. Кто-нибудь знает, как мне избавиться от этого?


person Jawad    schedule 21.12.2019    source источник
comment
TL;DR: вы не можете игнорировать файл во время слияния. Использование .gitattributes этого не делает. Иногда, определив драйвер слияния, вы можете сделать так, чтобы эффект слияния был таким, как вы хотите. Файл не был проигнорирован! Это иногда применимо не всегда. Не делайте этого, вы просто сделаете свою жизнь несчастной.   -  person torek    schedule 22.12.2019
comment
@torek есть ли другой способ сделать это в нашем реальном проекте?   -  person Jawad    schedule 22.12.2019
comment
Не совсем. В общем, файлы, которые не предназначены для слияния, никогда не должны быть зафиксированы в первую очередь. Конфигурации должны иметь зафиксированные файлы prototype или example; фактическая конфигурация должна храниться в другом месте, а не в репозитории.   -  person torek    schedule 22.12.2019


Ответы (1)


Я смог воспроизвести вашу проблему и почти уверен, что вы забыли эту часть:

А затем определите фиктивную нашу стратегию слияния с помощью:

$ git config --global merge.ours.driver true

Из вашей основной ветки.

Переключитесь на мастер, настройте свою стратегию слияния, она должна работать.

Как правильно использовать .gitattributes с merge=ours

Редактировать: из-за того, что было сказано в комментариях, вы, вероятно, захотите удалить этот файл из отслеживания:

Как остановить отслеживание и игнорировать изменения в файле в Git?

person Olegp    schedule 21.12.2019
comment
Я также пробовал это, но это не сработало, когда я создаю запрос на вытягивание, а затем объединяю ветку в битбакете, используя стратегию слияния по умолчанию. - person Jawad; 22.12.2019
comment
@Jawad, не забывайте, что PR объединяется удаленно, поэтому git config --global merge.ours.driver true не влияет на PR - person Yuri G.; 22.12.2019