Как удалить коммиты из запроса pull

Я сделал запрос pull, но после этого я сделал некоторые коммиты для проекта локально, который закончил загрязнять мой запрос pull, я попытался удалить его, но без успеха.

Я нашел несколько подобных вопросов на StackOverflow, но я не могу применить то, что там. Это мой первый запрос на GitHub, поэтому мне странно, как все это работает.

выделенная фиксация-это та, которую мне нужно сохранить и удалить все остальные вещи. Это становится четвертой фиксацией в история, потому что я делаю некоторые вещи слияния.

enter image description here

мой журнал git enter image description here

может кто-нибудь объяснить, что происходит и как решить эту проблему?

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 создаст новую фиксацию с помощью отменить первоначальной фиксации.


люди не хотели бы видеть неправильную фиксацию и возврат фиксации для отмены изменений неправильной фиксации. Это загрязняет историю.

вот простой способ удаления неправильной фиксации вместо отмены изменений с помощью фиксации возврата.

  1. git checkout my-pull-request-branch

  2. git rebase -i HEAD~n // где n - это количество последних коммитов, которые вы хотите включить в интерактивной ребаз.

  3. заменить pick С drop для коммитов вы хотите отказаться.
  4. сохранить и выйти.
  5. git push --force

Итак, сделайте следующее ,

допустим, ваше имя ветви-my_branch, и у этого есть дополнительные коммиты.

  1. git checkout -b my_branch_with_extra_commits (сохранение этой ветви под другим именем)
  2. gitk (открывает консоль git)
  3. ищите фиксацию, которую вы хотите сохранить. Скопируйте SHA этого фиксации в блокнот.
  4. git checkout my_branch
  5. gitk (это откроет консоль git)
  6. щелкните правой кнопкой мыши на фиксации хотите вернуться в (состояние до ваших изменений) и нажмите "reset branch to here"
  7. сделать git pull --rebase origin branch_name_to _merge_to
  8. git cherry-pick <SHA you copied in step 3. >

теперь посмотрите на локальную историю фиксации филиала и убедитесь, что все выглядит хорошо.