Возврат коммитов на GitHub
У меня есть набор коммитов (опубликован) 10+, которые я хочу удалить. Поэтому в идеале я хотел создать запрос на извлечение, который затем можно было бы объединить с ветвью разработки моего проекта.
Проблема в том, что если я делаю:
git reset --hard <commit_hash>
git checkout -b my_fixed_branch
git push origin my_fixed_branch
Запрос pull на github ничего не показывает в diff... (Как я понимаю, это происходит потому, что ветвь разработки уже содержит изменения из <commit_hash>
). Так что я не очень понимаю, как сделать сброс правильно...
Конечно, я думаю, что можно сделать что-то вроде
git reset --hard <commit_hash>
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
), поэтому их можно объединить (возможно, с помощью запроса на удаление).
Либо вы их отбрасываете, но тогда нечего объединять: вам нужно принудительно нажать (выполнив именно те команды, которые вы задаете в своем вопросе).