Поскольку вы нажали, ваш вариант с наименьшей вероятностью сломать вещи, вероятно, git revert
:
git checkout master
git revert commit1 commit2
git merge new-branch
git push
Обратите внимание, что это приведет к тому, что master будет иметь те же файлы, что и new-branch, но commit1 и commit2 останутся в истории master вместе с двумя дополнительными коммитами, отменяющими свои изменения.
НЕ РЕКОМЕНДУЕТСЯ
Если вы действительно, действительно хотите действительно удалить коммиты, которые вы уже выдавили из мастера, сначала сообщите всем своим товарищам по команде, что вы, вероятно, собираетесь что-то сломать, затем используйте git reset
:
git checkout master
git reset --hard commit3
git merge new-branch
git push -f
--hard
удалит все изменения, сделанные commit1 и commit2 из вашей файловой системы. Вы можете использовать --soft
чтобы сохранить эти изменения в файловой системе, в то же время удаляя эти коммиты.
Возможно, вы захотите указать своим партнерам по команде документацию по восстановлению после исходной перебазировки (git reset указывает на этот раздел, когда говорит об использовании reset --hard
для уже отправленных коммитов ).