Подтвердить что ты не робот

Как удалить коммиты из запроса на включение

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

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

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

enter image description here

мой мерзавец журнал enter image description here

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

4b9b3361

Ответ 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

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

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

  1. git checkout my-pull-request-branch

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

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

Ответ 3

Так что сделайте следующее,

Допустим, ваша ветвь называется 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. >

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

Ответ 4

Если вы удаляете коммит и не хотите сохранять его изменения, у @ferit есть хорошее решение.

Если вы хотите добавить этот коммит в текущую ветку, но не имеете смысла быть частью текущего pr, вы можете вместо этого сделать следующее:

  1. используйте git rebase -i HEAD~n
  2. Поменяйте коммит, который вы хотите удалить, на нижнюю (самую последнюю) позицию
  3. Сохранить и выйти
  4. используйте git reset HEAD^ --soft чтобы git reset HEAD^ --soft изменения и вернуть их в поэтапное состояние.
  5. используйте git push --force чтобы обновить удаленную ветку без удаленного коммита.

Теперь вы удалили коммит с вашего пульта, но все равно сохраните изменения локально.