git revert -m 1 ba888fc8
git push origin proba3git log --merges -1 --format='%h %p %s' ba888fc8git revert <хеш коммита-отката>Обычный git revert на merge-коммите откажется работать: у слияния два родителя, и Git не знает, относительно какого считать изменения. -m указывает номер основной линии — того родителя, состояние которого нужно сохранить.
-m 1 почти всегда правильный: первый родитель у merge-коммита — ветка, в которую вливали (обычно main или develop). То есть revert -m 1 убирает то, что принесла влитая ветка. -m 2 понадобится в редком случае, когда откатить нужно наоборот.
Сверить, если сомневаетесь: %p в выводе git log печатает хеши родителей по порядку — первый и есть mainline.
Главная ловушка приходит позже. После отката ветка формально остаётся влитой, а её изменения — отменёнными. Попытка влить её ещё раз ничего не даст: Git видит, что коммиты уже в истории, и приносить нечего. Правильный способ вернуть — откатить сам коммит-откат, тогда изменения появятся снова.
Именно поэтому revert предпочтителен для уже опубликованных слияний, а reset — нет: revert добавляет новый коммит и не переписывает историю, которую уже забрали остальные.