Две ветви конфликтуют при объединении с исходной веткой - PullRequest
0 голосов
/ 03 марта 2019

Шаг 1. Базовая ветвь: master

/* file: master.txt */
line 1
line 2
line 3

Шаг 2. Извлеките новую ветку b1 git checkout -b b1 и отредактируйте master.txt следующим образом, затем подтвердите.

/* file: master.txt */
line 1 changed
line 2
line 3

Шаг3. Извлеките мастер git checkout master и извлеките новую ветвь b2 git checkout -b b2 и отредактируйте master.txt следующим образом, затем подтвердите.

/* file: master.txt */
line 1
line 2 changed
line 3

Шаг 4. Снова извлеките мастер * git checkout master и объедините b1 git merge b1

Шаг 5. Оставайтесь в основной ветке и попытайтесь объединить b2 git merge b2, есть конфликт

/* file: master.txt */
<<<<<<< HEAD
line 1 changed
line 2
line 3 
=======
line 1
line 2 changed
line 3
>>>>>>> b2

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

1 Ответ

0 голосов
/ 03 марта 2019

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

Также следует отметить, что ваш пример может вводить вас в заблуждение.Изменения в одном и том же файле будут объединены без конфликта, если только они оба не редактируют одну и ту же часть («кусок») кода.Конечно, изменения перекрываются (и конфликтуют), если они касаются одной и той же линии;но они также конфликтуют, если касаются соседних линий.

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

Тем не менее, выможете поискать пессимистический инструмент контроля источника блокировки, если хотите.Возможно, вы не уверены в этом, несмотря на подавляющий консенсус по этому вопросу, или, возможно, что-то в вашем проекте действительно отличается.это ", это было бы не по теме для SO, поэтому я не буду вдаваться в подробности.

...