У меня есть ветвь develop
и release
.
Я создал ветку patch из develop
с 6 коммитами A, B, C, D, E, F (с A
самым старым). Он был просмотрен, а затем объединен в трехстороннем порядке обратно в develop
.
Затем я создал аналогичную ветку исправлений из release
(для проверки) и выбрал коммиты из моей ветки исправлений на основе develop
в мою ветку исправлений на основе release
следующим образом:
git checkout release/patch/ticket1
git cherry-pick A^..F
Это привело к неожиданному конфликту слияния при применении исправлений.
Я git cherry-pick --abort
ed и вместо этого попытался
git cherry-pick A
git cherry-pick B
git cherry-pick C
git cherry-pick D
git cherry-pick E
git cherry-pick F
И это работало без конфликтов.
Я думал, что cherry-pick
создал патч для каждого коммита и последовательно применил их к целевой ветке?
Так почему же я столкнулся с конфликтом слияния при указании диапазона, но не при применении отдельных коммитов?
Связанный
РЕДАКТИРОВАТЬ
Я попытался провести тесты, предложенные в комментариях, и не смог воспроизвести свою проблему. Поскольку мое понимание секвенсора выбора вишни правильное, мне придется предположить вмешательство какого-то другого актера (IDE, блокирующий процесс наблюдателя?).
A
, затемB^..F
и другие подобные комбинации? Если первые коммиты в серии применены успешно, будут ли результаты такими же? - person max630   schedule 13.04.2018A^..F
выбирает эти шесть коммитов в указанном порядке, это должно работать. Попробуйтеgit rev-list --reverse --topo-order A^..F
, чтобы увидеть, получили ли вы эти шесть коммитов в таком порядке (здесь нам нужен--reverse --topo-order
, так как порядок по умолчанию основан на дате коммита). - person torek   schedule 13.04.2018