Наверное, уже не актуально, но так как вопрос в тостере есть и кто-то на него может наткнуться - думаю мой ответ не будет лишним.
Не могу точно сказать, как сделать так, чтобы git учитывал факт вливания
master в
feature. Но конкретно эту проблему можно было бы решить с помощью rebase.
Обозначим тегами следующие коммиты:
beforeMerge1M - коммит в ветке master непосредственно перед коммитом первого merge.
beforeMerge1F - коммит в ветке future непосредственно перед коммитом первого merge.
Сначала нужно заменить первый merge на rebase.
Для этого перебазируем последовательность коммитов с начала ветки
future до вливания в нее мастера на тот коммит мастера, который предшествует вливанию:
git checkout beforeMerge1F
git branch tmpFeature
git rebase beforeMerge1M
Таким образом, в голове ветке
tmpFeature будет как раз то же состояние, что и в результате первого слияния.
Теперь перебазируем остальную часть ветки на этот коммит:
git checkout feature
git rebase tmpFeature
Теперь состояние ветки feature осталось таким же как и было, но история изменилась - в ней нет коммита слияния и ответвляется от мастера она после коммита
beforeMerge1M.
Можно делать слияние в
master, которое планировалось, но, возможно, имеет смысл ее еще раз перебазировать на мастер, чтобы в процессе этого разрешить возникающие конфликты, если они будут и потом без рпоблем сделать merge.
git rebase master
git checkout master
git merge feature --squash
ps. Всё это умозрительные рассуждения и где-то я мог ошибиться, пишите мне в таком случае, помогу разобраться.