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