Исправить ветку, когда восходящий поток изменился - PullRequest
0 голосов
/ 16 мая 2019

Я работаю над веткой feature-b, которая разветвляется от feature-a. У feature-a некоторые коммиты были сжаты и объединены, а затем git push -f на удаленный, так что я не уверен, как сохранить мой feature-b.

Истории выглядели так:

A - B - C (feature-a) 
     \
      D (feature-b)

и теперь выглядит так:

A' (feature-a `after squash`)
 \
  ?
   \
    D (feature-b)

Изменение в D невелико, но меня больше интересует, как примирить эту ситуацию, учитывая, что это произошло.

Я знаю, чтобы избежать git push -f и раздавить, когда эта история была совершена. Есть ли способ очистить коммиты, если я разветвил собственную ветку функций?

Ответы [ 2 ]

1 голос
/ 17 мая 2019

Вот как я это делаю:

git rebase --onto origin/feature-a old-feature-a-tip feature-b

То, что вы говорите git, - это перебазирование ревизий, которые относятся к feature-b , отбрасывая все ревизии, связанные с old feature-a (те, которые относятся к старой функции .... говорят, что вы уже настроили локальную ветку на старой функции A, и в этой ветви уже были некоторые изменения, которые не были включены в вашу функциюB? Это не имеет значения, gt отбросит что-либо из истории old-feature-a, так что это может быть последняя ревизия, относящаяся к feature-a, которая также принадлежит текущей истории feature-b), и поместит их поверх новой функции-a.

0 голосов
/ 16 мая 2019

Я бы попробовал:

$ git fetch
$ git checkout feature-b
$ git rebase feature-a

если нет конфликтов, это должно закончиться удалением коммитов ? и фиксацией D как прямого потомка A'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...