Git Merge: наши + их смесь, игнорируя конфликты. Возможный? - PullRequest
2 голосов
/ 15 ноября 2011

Мне интересно, могу ли я сказать git разрешать конфликты, добавляя «их» блоки кода после «наших».Знает ли он вообще о блоках кода языка C?

Пример:

//====== ours ======
....
if(cond1)
{
    do_smth();
}
....

//====== their ======
....
if(cond2)
{
    do_smth_else();
}
....

Обычно такое объединение приводит к конфликту, который я хотел бы разрешить автоматически как:

//======= merge result ========
if(cond1)
{
    do_smth();
}

if(cond2)
{
    do_smth_else();
}

Спасибо!

Ответы [ 3 ]

2 голосов
/ 15 ноября 2011

Я понимаю, что помечать это как конфликт кажется раздражением, но это сделано намеренно.Рассмотрим следующую ситуацию, которую вы добавили:

if( cond1 || cond2 )
{
   perform_action1();
}

и добавили:

if( cond1 )
{
   perform_action1();
}

Часть, которую они добавили, вероятно, не соответствует тому, что вы пытались выполнить.Если бы их код был добавлен к вашему, то perform_action1() был бы вызван дважды.

Короче говоря, нет способа автоматически объединиться, потому что несколько раз это будет плохой идеей, это будет действительно плохая идея.

0 голосов
/ 12 ноября 2015

Вы можете использовать union gitattribute

союз

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

Как говорит @Greyson, это не очень хорошая идея для C-кода. См. мой ответ на аналогичный вопрос для примера.

0 голосов
/ 15 ноября 2011

Нет, я боюсь, что алгоритмы слияния git не понимают ни структуры программ на C, ни какого-либо другого языка программирования. Есть варианты стратегии рекурсивного слияния git для автоматического разрешения конфликтующих блоков в пользу ours или theirs, но, насколько я знаю, такой опции для автоматического включения обоих вариантов не существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...