Ответ 1
TL;DR
Даже если вы можете включить комманды слияния в rebase, вы не можете выполнить компромисс слияния. Git сообщит вам, говоря:
Отказ от склеивания слияния: < SHA-1 >
Что вы можете сделать, чтобы сохранить изменения, сделанные во время слияния, - это преобразовать комманду слияния в обычную фиксацию. В этот момент вы можете раздавить его, как и любое другое сообщение.
Предполагая, что HEAD
указывает на фиксацию слияния:
git reset --soft HEAD~1 # Keeps changes in the index
git commit # Create a new commit, this time not a merge commit
git rebase -i HEAD~4 # Do an interactive rebase and squash the new commit
Сохранение слияния завершается во время rebase
В общем, вы можете сохранять коммиты слияния при выполнении переадресации с помощью git rebase -p
.
Однако его цель состоит в том, чтобы воспроизвести коммиты, ведущие к слиянию. Любые изменения, которые являются частью слияния, фиксируются (например, разрешения конфликтов), не сохраняются.
Здесь из документации:
-p
- сохраняющие-слияния
Повторное создание слияния совершает вместо того, чтобы сплющить историю путем повторного воспроизведения, объявляет о слиянии. Объединить конфликт резолюции или поправки вручную для слияния коммитов не сохраняются.
Это использует механизм--interactive
внутри, но комбинируя его с опцией--interactive
явно не является хорошей идеей если вы не знаете, что делаете (см. ОШИБКИ ниже)
bug документация ссылается на инициируется путем переупорядочения коммитов.