Отмена слияния с использованием основного родительского номера - PullRequest
1 голос
/ 26 мая 2020

Что такое --mainline parent-number в git revert? Когда я возвращаюсь к слиянию с журналом (до слияния), я, хотя он вернул бы ветвь f1, но он возвращал и f1, и f2.

commit f932068caca9b25fc5b68b25b907a7fb39250510 (HEAD -> master)
Merge: 2a5ca98 4e171d0 6bdcc66

    Merge branches 'f1', 'f2' and 'f3'

commit 6bdcc66e5556250ae1174257fbdf426aba0bfc2b (f3)

    f3 file added

commit 4e171d0e9cf81c092879418e17ba5d515c7dc332 (f2)

    1st commit in f2

commit 2a5ca9806fc0922a013d2e1484c19ac3ea0a23b3 (f1)

    1st commint in f1

commit 0a9eee7e8d1750d6a2ae2b93347144f3a42ae70d

1st commit in master

после возврата, я получаю, как показано ниже,

$ git revert f932068 -m 3
[master 23b0313] Revert "Merge branches 'f1', 'f2' and 'f3'"
 2 files changed, 0 insertions(+), 0 deletions(-)
 delete mode 100644 f1file
 delete mode 100644 f2file

почему при его возврате ветви f1 и f2 сливаются? а здесь -m 3 что означает?

1 Ответ

1 голос
/ 26 мая 2020

Кажется, что ваша фиксация Merge branches 'f1', 'f2' and 'f3' - это (очень необычно!) octo-merge, т.е. вы объединили несколько веток в master с помощью одной фиксации. Хотя git способен на это, вы по существу теряете возможность откатить любую его часть.

Тогда: git revert не удаляет коммиты, а просто создает дополнительный коммит, который отменяет изменения, внесенные некоторыми другими изменениями. По умолчанию (имеет git help revert услужливо указывает), revert не может отменить фиксацию слияния, потому что он не знает, какой из исходных (обычно 2, но 4 в вашем случае) исходных коммитов вы считаете своим "перед "состояние, которое вы хотите вернуть в .

В вашем случае указание -m 3 обозначает номер родительского элемента слияния. 3 (т.е. ветвь f3) в качестве «основной линии», к которой вы хотите вернуться:

Merge: 2a5ca98 4e171d0 6bdcc66
       ^       ^       ^
Parent 1       2       3

Таким образом, ваша команда проинструктирует git отменить изменения, внесенные родителями 1 и 2, но не родительскими 3, сохраняя изменения с f3 без изменений.

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