Я не думаю, что есть способ изменить стратегию слияния таким образом, потому что история изменений имеет отношение к слиянию.Речь идет не просто о сравнении двух независимых файлов, а о применении изменений.Поскольку B
является родоначальником A
, после слияния A
all ваши изменения в B
будут объединены с master.
Если избыточное слияние старшегосостояние отменит новые изменения, вся концепция слияния станет очень ... странной.
То, что вы на самом деле хотите сделать, это не слияние изменения (потому что все объединено), но возвращает некоторых изменений, которые уже были объединены.
Для этого вы можете использовать git revert <sha>
в ветке master
, где с помощью <sha>
вы можете указать коммит, который вы хотите вернуть.
git revert <sha>
создает новый коммит, который точно инвертирует указанный коммит.
Оригинал
master <- HEAD
|
1----------5
`-2--3--4´
| |
B A
После git revert 4
master <- HEAD
|
1----------5--6
`-2--3--4´ `revert A
| |
B A
Если вы сделали более одного коммита после B
, вы можете указать диапазон:
git revert B..A
, который создаст отдельный возвратный коммит для каждого исходного коммита, или используйте
git revert --no-commit B..A
git commit -m"Revert everything at once"
, чтобы создать один ревert commit для всех отмененных изменений.