Кажется, что ваша фиксация 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
без изменений.