git rebase с включенной опцией ускоренной перемотки вперед - PullRequest
1 голос
/ 12 апреля 2019

Допустим, у меня есть такая ситуация:

a -- b -----------------c -- d -- e   <-- Master
      \
       f ------------l                <-- Branch1
        \           /
         g -- h -- i                  <-- Branch2

Где i было объединено с f с помощью:

git merge --no-ff

Ну, теперь я хочу rebase от Branch1 до master.

Если я использую git rebase master Branch1, результат будет:

a -- b -- c -- d -- e                     <-- Master
                     \
                       f -- g -- h -- i   <-- Branch1

Он только что слился, игнорируя мой предыдущий --no-ff.

Вопрос

Есть ли такая инструкция, как git rebase --no_ff ...?

Чего я хотел бы достичь:

a -- b -- c -- d -- e                   <-- Master
                     \
                      f ------------l   <-- Branch1
                       \           /
                        g -- h -- i     <-- Branch2

Просматривая в Интернете (включая stackoverflow), я не смог найти никакой полезной информации.

1 Ответ

1 голос
/ 12 апреля 2019

Решение

Параметр -p для git rebase предназначен для решения этой проблемы.

Это должно работать:

git rebase -p master Branch1

С git rebase -h:

-p, --preserve-merges
                      try to recreate merges instead of ignoring them

Предостережения

Спасибо @andreee за указание на эти проблемы, задокументированные в git rebase --help:

  • Разрешения конфликтов слияния или ручные поправки к коммитам слияния не сохраняются.
  • объединение --preserve-merges с --interactive, как правило, не очень хорошая идея
...