сделаю тебя счастливым.

отаю над проектом, который имеет две ветви:master а такжеfeature

feature Ветка была создана некоторое время назад и имеет множество коммитов.

Посколькуfeature ветвь была создана там было несколько коммитовmaster

В этот момент, когда я иду вrebase отmaster Я получаю конфликты. Я разрешаю их, а затемrebase --continue, Тогда я снова получаю конфликты, и снова решаю иrebase --continue, Это происходит снова и снова, и часто кажется, что это одни и те же конфликты.

На мой взгляд, вот что происходит:

master(commits)->a->b feature(commits)->c->d->e->f->g

feature был разветвлен отmaster->a и тогда все коммиты были созданы.

Когда яrebase это перематывает назад к началуfeature откуда он был разветвленmaster относитсяmaster->b а затем начинает применятьсяfeature->c на данный момент у него есть конфликт. Я разрешаю (принимаяmaster изменения) и продолжить. Теперь он пытается применитьfeature->d и находит тот же конфликт. Я снова должен решить иcontinue, Это происходит снова и снова.

Например, вот изменения:

master->a
    <div id="foo">

master->b
    <div id="bar">

feature->c
    <div id="fubar">

feature->d
    //Nothing has changed, inherited from feature->c
    <div id="fubar">

Я предполагаю, что когда он достигнетfeature->c это говорит об измененииfoo вfubar а потом замечает, чтоfoo уже изменен наbar, Я решаюbar а затем он делает ту же логику, применяяfeature->d

Мои два вопроса:

1) Правильно ли я понимаю, как git работает / имеет дело с коммитами / конфликтами / перебазированием?

2) Как мне избежать повторения одних и тех же конфликтов снова и снова? Я думал о том, чтобы раздавить все коммиты в ветви функций, чтобы иметь дело только с одним. Я не был уверен, было ли это хорошей идеей или наилучшим способом добиться успеха в сценарии.

Обратите внимание, это очень упрощенный пример. В действительности у меня гораздо больше коммитов и внутри каждого файла с многочисленными конфликтами. Некоторые из них кажутся одинаковыми на протяженииrebase --continue процесс и некоторые новые для каждогоcommit.

Моя конечная цель - очистить этот проект настолько просто, насколько это возможно (перебрать ветку функций с текущего мастера). Мне плевать на историю коммитов.

Ответы на вопрос(5)

Ваш ответ на вопрос