По какой-то причине это выглядит так, будто git cherry-pick выбирает другие коммиты, когда у мух возникают конфликты слияния.Они исчезают, когда мы используем git mergetool
, но не позволяют нам вручную редактировать файл, конфликтующий при слиянии.
Кто-нибудь знает, почему это происходит?
Чтобы показать, что я имею в виду, давайте возьмем свежийрепозиторий new git 1.7.4 с одним файлом foo
:
header
footer
Давайте создадим в этой точке новую ветвь с именем bar
.Вернемся к мастеру, давайте добавим три изменения в этот файл в отдельных коммитах.
Фиксация 1:
header
+add something
+
footer
Фиксация 2:
header
add something
+add something else
+
footer
Фиксация 3:
header
add something
add something else
+important change!
+
footer
Поскольку этот последний коммит важен, после того, как мы решим, что мы хотим вернуть его к ветке bar
и git cherry-pick <commit>
на этой ветке.
К сожалению, это приводит кинтересный конфликт слияния в файле foo
:
header
<<<<<<< HEAD
=======
add something here
add something else here
important change!
>>>>>>> 356ca3c... important change
footer
Обратите внимание, что git mergetool
, кажется, делает правильную вещь и производит это:
header
+important change!
+
footer
Почему файл, конфликтующий слиянием, содержитсовершает до того, что мы пытались выбрать вишню ?