Как удалить коммиты из запроса на включение
Я сделал запрос на удаление, но после этого я сделал некоторые коммиты локально для проекта, которые закончили загрязнять мой запрос на удаление, я попытался удалить его, но безуспешно.
Я нашел несколько похожих вопросов по StackOverflow, но я не могу применить то, что там. Это мой первый запрос на GitHub, поэтому мне странно, как все это работает.
Мне нужно сохранить выделенный коммит и удалить все остальные вещи. Это становится четвертым коммитом в истории, потому что я делаю вещи слияния.
![enter image description here]()
мой мерзавец журнал ![enter image description here]()
Может кто-нибудь объяснить, что происходит и как решить эту проблему?
Ответы
Ответ 1
У вас есть несколько способов сделать это.
Это сообщение - прочитайте часть о возврате, подробно объясните, что мы хотим делать и как это сделать.
Вот самое простое решение вашей проблемы:
# Checkout the desired branch
git checkout <branch>
# Undo the desired commit
git revert <commit>
# Update the remote with the undo of the code
git push origin <branch>
Команда revert создаст новую фиксацию с отменой исходной фиксации.
Ответ 2
Людям не хотелось бы видеть неправильный коммит и возвращенный коммит, чтобы отменить изменения неправильного коммита. Это загрязняет историю.
Вот простой способ удалить неправильный коммит вместо того, чтобы отменить изменения с помощью обратного коммита.
-
git checkout my-pull-request-branch
-
git rebase -i HEAD~n
//где n
- количество последних коммитов, которые вы хотите включить в интерактивную перебазировку.
- Замените
pick
с drop
для коммитов, которые вы хотите сбросить. - Сохранить и выйти.
-
git push --force
Ответ 3
Так что сделайте следующее,
Допустим, ваша ветвь называется my_branch и имеет дополнительные коммиты.
-
git checkout -b my_branch_with_extra_commits
(сохранение этой ветки под другим именем) -
gitk
(открывает консоль git) - Ищите коммит, который вы хотите сохранить. Скопируйте SHA этого коммита в блокнот.
-
git checkout my_branch
-
gitk
(откроется консоль git) - Щелкните правой кнопкой мыши на коммите, к которому вы хотите вернуться (укажите состояние перед вашими изменениями), и нажмите "
reset branch to here
" - Сделайте
git pull --rebase origin branch_name_to _merge_to
-
git cherry-pick <SHA you copied in step 3. >
Теперь посмотрите историю коммитов в локальной ветке и убедитесь, что все выглядит хорошо.
Ответ 4
Если вы удаляете коммит и не хотите сохранять его изменения, у @ferit есть хорошее решение.
Если вы хотите добавить этот коммит в текущую ветку, но не имеете смысла быть частью текущего pr, вы можете вместо этого сделать следующее:
- используйте
git rebase -i HEAD~n
- Поменяйте коммит, который вы хотите удалить, на нижнюю (самую последнюю) позицию
- Сохранить и выйти
- используйте
git reset HEAD^ --soft
чтобы git reset HEAD^ --soft
изменения и вернуть их в поэтапное состояние. - используйте
git push --force
чтобы обновить удаленную ветку без удаленного коммита.
Теперь вы удалили коммит с вашего пульта, но все равно сохраните изменения локально.