Путаница в git с историей коммитов, как отменить два коммита и merge?

Здравствуйте. Случайно опечатался в сообщении коммита, не заметил, отправил на удаленный репозиторий (bitbucket). По неопытности пытался исправить командой amend. Отправить на удаленный не получилось. Сделал pull, после чего удалось отправить. Но получилось слияние веток (master и master?). После чего пытался делать всякие reset'ы и revert'ы. В результате один коммит разросся в три + еще один в локальном (пока не отправил):
ff8a158ffece4964a9dbba1235bf613e.png
А в локальном репозитории еще и один revert коммит лежит, но это хоть решается простым "удалить и закачать заново все". Как убрать весь этот мусор из удаленного репозитория? Не оставлять же все так.
  • Вопрос задан
  • 3038 просмотров
Решения вопроса 2
v_decadence
@v_decadence
git reset + git push --force
При условии, что никто больше не скачивал этот мусор из удаленного репозитория и не пушил туда что-то после Вас.
Ответ написан
Комментировать
iximiuz
@iximiuz
То, что вам нужно, называется rewrite history. Опасно для выполнения в конкурентной среде, т.е. если одновременно с вами кто-то еще может сделать pull или push в удаленный репозиторий. См. здесь. Грубо говоря, нужно было сделать git push --force, а не git pull + git commit --amend + git push. Но все еще поправимо, git может все!
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Vovaka
В случае если над вашим проектом работает несколько человек нужно отревертать неудавшися мёрж, в фиче бранче пофиксить ошибку и выполнив ревёрт/ревёрта сделать ещё один, исправленный мёрж в мастер.
Более детально это описано здесь.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы