Учитывая, что ваша ветвь является общедоступной и общедоступной, вам, вероятно, следует , а не сделать полный сброс, чтобы фактически удалить 2 верхних коммита. Вместо этого используйте git revert
:
git revert master~2..master
или, может быть
git revert --no-commit HEAD~2..
Это добавит новый коммит поверх HEAD
вашей ветки master
, который функционально отменит текущие топ-2 коммитов. Обратите внимание, что эти коммиты все еще будут там, что означает, что любой, кто потянет, просто получит новый коммит.
Edit:
Судя по вашим комментариям и сообщениям об ошибках, кажется, что один из двух коммитов является коммитом слияния. Это означает, что вам нужно будет сказать Git, кому из двух родителей следует следовать при выполнении возврата. Я не знаю, как сделать это в одной команде с диапазоном коммитов, но мы можем попробовать сделать два отдельных возврата. Предполагая, что HEAD указывает на коммит слияния:
git revert -m 1 abc123 # or use -m 2 to follow the other parent
Здесь abc123
- это хэш SHA-1 коммита HEAD, который вы можете найти с помощью git log
. Затем сделайте второй возврат для второго коммита:
git revert xyz345