Как удалить коммиты из запроса pull
Я сделал запрос pull, но после этого я сделал некоторые коммиты для проекта локально, который закончил загрязнять мой запрос pull, я попытался удалить его, но без успеха.
Я нашел несколько подобных вопросов на StackOverflow, но я не могу применить то, что там. Это мой первый запрос на GitHub, поэтому мне странно, как все это работает.
выделенная фиксация-это та, которую мне нужно сохранить и удалить все остальные вещи. Это становится четвертой фиксацией в история, потому что я делаю некоторые вещи слияния.
может кто-нибудь объяснить, что происходит и как решить эту проблему?
3 ответов
у вас есть несколько способов сделать это.
этот пост-прочитайте часть о revert подробно объяснит, что мы хотим сделать и как это сделать.
вот самое простое решение вашей проблемы:
# 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 создаст новую фиксацию с помощью отменить первоначальной фиксации.
люди не хотели бы видеть неправильную фиксацию и возврат фиксации для отмены изменений неправильной фиксации. Это загрязняет историю.
вот простой способ удаления неправильной фиксации вместо отмены изменений с помощью фиксации возврата.
git checkout my-pull-request-branch
git rebase -i HEAD~n
// гдеn
- это количество последних коммитов, которые вы хотите включить в интерактивной ребаз.- заменить
pick
Сdrop
для коммитов вы хотите отказаться. - сохранить и выйти.
git push --force
Итак, сделайте следующее ,
допустим, ваше имя ветви-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. >
теперь посмотрите на локальную историю фиксации филиала и убедитесь, что все выглядит хорошо.