Git rebase --preserve-merges терпит неудачу
У меня есть (большое) дерево коммитов, которое содержит несколько коммитов слияния, которые я хочу перебазировать в другой коммит. При обычном ребазе git просит меня разрешить конфликты слияния. Я не хотел проверять каждое слияние, потому что это было бы много работы. Узнав о параметре --preserve-merges, который хорошо объясненВотЯ думал, что нашел идеальный инструмент для этой задачи. Тем не менее, я не могу заставить его работать должным образом. Я создал игрушечный пример, который демонстрирует проблему.
Начиная с пустой папки, мы сначала создаем ветку со слиянием и другую ветку, на которую мы будем перебазировать.
A---B--
\ \
---C---D
\
---E
кудамастер относится кB, ветка относится кD а такжепрощай Гиса относится кE.
git init
echo Hello > Hello.txt
git add Hello.txt
git commit -m "Create Hello.txt (commit A)"
git tag start
echo World! >> Hello.txt
git commit -am "Change to Hello World (commit B)"
git checkout start
git checkout -b branch
echo Dave >> Hello.txt
git commit -am "Change to Hello Dave (commit C)"
git merge master
echo Hello World, Dave! > Hello.txt
git add Hello.txt
git commit -m "Merge branch master into branch (commit D)"
git checkout start
git checkout -b goodbye-branch
echo Goodbye > Goodbye.txt
git add Goodbye.txt
git commit -m "Add Goodbye.txt (commit E)"
До этого момента все шло хорошо. Был конфликт слияния, но мы решили его. Теперь попробуем ребазироватьветка наE чтобы получить следующее дерево коммитов:
A---E----B'
\ \
C'---D'
git checkout branch
git rebase -p goodbye-branch
Это заканчивается следующей ошибкой:
Auto-merging Hello.txt
CONFLICT (content): Merge conflict in Hello.txt
Automatic merge failed; fix conflicts and then commit the result.
Error redoing merge f567809e2cc91244cc7fdac210e1771dc75e4d86
Файл содержит следующий контент:
Hello
<<<<<<< HEAD
Dave
=======
World!
>>>>>>> 0437403c97f33f229e41ec9584ce891a50052e48
Что я делаю неправильно? Я ожидаю, что git сможет использовать commitD чтобы разрешить конфликт слияния, с которым он сталкивается при перебазировании.
Я использую Git 1.9.4.msysgit.1, которая является самой последней версией прямо сейчас.