Возврат коммитов на GitHub

У меня есть набор коммитов (опубликован) 10+, которые я хочу удалить. Поэтому в идеале я хотел создать запрос на извлечение, который затем можно было бы объединить с ветвью разработки моего проекта.

Проблема в том, что если я делаю:

  1. git reset --hard <commit_hash>
  2. git checkout -b my_fixed_branch
  3. git push origin my_fixed_branch

Запрос pull на github ничего не показывает в diff... (Как я понимаю, это происходит потому, что ветвь разработки уже содержит изменения из <commit_hash>). Так что я не очень понимаю, как сделать сброс правильно...

Конечно, я думаю, что можно сделать что-то вроде

  1. git reset --hard <commit_hash>
  2. git push origin develop -f

Чтобы напрямую отменить изменения в ветке разработки... но я бы хотел вместо этого использовать Pull Request.

2 ответа

Это отменяет каждый коммит после (не включая) <commit_hash> до сих пор:

git revert --no-commit <commit_hash>..HEAD
git commit -m "Message explaining what was done"

--no-commit опция гарантирует, что вы получите один возвратный коммит вместо нескольких.

Вы можете вернуться без него, чтобы создать отдельные коммиты для каждого слияния. Это может быть понятнее для других пользователей, и тогда Git дает вам сообщения коммита бесплатно.

Либо вы отменяете коммиты (т.е. создаете новые коммиты, которые отменяют изменения, используя git revert), поэтому их можно объединить (возможно, с помощью запроса на удаление).

Либо вы их отбрасываете, но тогда нечего объединять: вам нужно принудительно нажать (выполнив именно те команды, которые вы задаете в своем вопросе).

Другие вопросы по тегам