Коротко
В вашем случае нужно ответвиться от текущего мастера, сделать реверт ненужных изменений (всех изменений ветки, видимо) и смерджить с мастером. Если после ответвления "ветки отката" в мастере появились новые изменения - стоит сначала влить их в ветку, решить возможные конфликты, протестировать и только после этого вливать эту ветку в мастер.
Подробноgit reset --hard commitref
, выполненный в
master перенесет его указатель на коммит
commitref и это в вашем случае не вариант ни при каких условиях, так как
master публичная ветка и перезаписывать историю в ней нельзя.
Убрать коммиты из мастера вы уже никак не можете. Остается только вариант создать коммит(ы), который откатывает часть изменений. Именно это и делает команда
git revert
. Если откатить нужно всё, что было влито в мастер при слиянии
branch-1 и
master можно использовать
опцию -m для того, чтобы указать относительно какого коммита нужно откатывать изменения.
Сначала узнаете, какой номер у предыдущего (перед вливанием
branch-1) коммита
master. Один из вариантов выполнить команду, где
branch-1-mergeTo-master - коммит слияния
branch-1 и
master.
git log -3 --graph branch-1-mergeTo-master
В информации о коммите будет строчка, типа такой:
* commit 5788ae1df77ce0911f802530b1208f1709c102d4
|\ Merge: 04d469b 57ed6bd
Предположим, что коммит мастера имеет
id =
04d469b. Тогда его номер -
1. Делаем реверт. Примерные команды:
git checkout master
git checkout -b branch-1-revert
git revert -m 1 branch-1-mergeTo-master
git commit -m "branch-1 reverted from master"
git merge master
git checkout master
git merge branch-1