Из корневого каталога вашей рабочей копии просто выполните
git checkout A2 -- .
git commit -m 'going back to A2'
Использование git revert
для этой цели было бы обременительным, поскольку вы хотите избавиться от целой серии коммитов и revert
отменяет их по одному за раз.
Вы тоже не хотите git reset
. Это просто изменит указатель вашей ветви master
: у вас не останется записи о неверном направлении. Координация также затруднительна: поскольку коммит, который вы изменили master
, не является потомком указателя ветки master
удаленного репозитория, нажатие завершится неудачно - если вы не добавите -f
(принудительно) или не удалите master
сначала перейдите в удаленный репозиторий и заново создайте его, нажав. Но тогда каждый, кто попытается вытащить, все еще будет иметь старую историю в своей локальной ветке master
, поэтому, когда origin/master
расходится, git pull
попытается выполнить слияние. Это не конец света: они могут выйти из этой ситуации, выполнив git rebase --onto origin/master $old_origin_master_commit master
(то есть перебазировать свои локальные коммиты, сделанные поверх старого origin/master
, на вершину нового origin/master
). Но Git не будет знать, что делать это автоматически, поэтому вам нужно координировать свои действия с каждым соавтором. Короче, не делай этого.