Я не уверен, если это дубликат или нет, как это своего рода один от сценария:Откат мерзавец тянуть, что уже были вытеснены
У меня есть филиал «бета», и начал новую «рефакторинг " филиал.
- Я сделал кучу кода в ветке «рефакторинг».
- Я вытащил последние изменения из бета-версии в рефакторинг (
git checkout refactor && git pull origin beta
) - Мои изменения были готовы, поэтому я проверил бета-версию и вытащил изменения из рефакторинга в бета-версию. (
git checkout beta && git pull origin refactor
) - Реализовано, что моя бета-ветвь не была актуальной, поэтому пришлось сделать
git pull
, чтобы вытащить последние бета-версии. - Теперь, когда бета-ветвь обновилась, сделал еще один
git pull origin refactor
, чтобы убедиться, что последнее не было (получено сообщение о автоматической фиксации, которое рефактор слился с бета-версией). - Я толкнул мой код :(
Так что теперь я понимая две вещи, которые я сделал неправильно:
- На этапе 3, я должен был сделать мерзавец тянуть первый, так что у меня было последние изменения в бета-версии
- На третьем этапе я понял, что должен был позвонить
git merge refactor
вместоgit pull origin refactor
(не спрашивайте меня, почему я это сделал, это понедельник, и я просто хотел, чтобы мой замечательный код рефакторинга был запущен в бета-версию тестирование). Теперь я понимаю, что если бы я делал обе эти вещи, ни один из последующих шагов не был d были необходимы.
Итак, мой вопрос заключается в следующем: технически, весь код есть и выглядит нормально, но сетевой график на github выглядит супер фанки, и у меня нет одного чистого объединения «слияния», которое я могу легко перевернуть вернемся к тому, чтобы вернуть мою объединенную ветку, вместо этого бета-версия теперь имеет все мои отдельные фиксации из ветки рефакторинга. Есть ли простой способ, которым я могу отбросить свое ошеломляющее слияние и сделать это более чистым способом?
Я пытался делать git checkout beta && git reset --hard [email protected]{"1 hour ago"}
, но проблема в том, что заставляет меня к устаревшей локальной версии бета, вместо того, что должно было быть последней версии, прежде чем я выпустил слияние, когда я должен был сделать мерзавец тянуть первым. Я чувствую, что должен быть способ сделать, как git reset --hard origin/[email protected]{"1 hour ago"}
, чтобы сбросить до удаленный бета-ветвь @ 1 час назад, а затем сделать git merge refactor
? Могу ли я просто нажать эти изменения и убедиться, что удаленные коммиты были перезаписаны?
Спасибо за любую помощь заранее! Я не решаюсь делать что-либо с помощью «git reset», поскольку рефактор довольно крупный, и есть много ожидающих изменений в бета-версии, которых я не делал, поэтому я больше беспокоюсь о том, чтобы сбросить сброс и потерять код чем я беспокоюсь о том, что нужно вручную отменить фиксации из рефакторинга, которые были втянуты.
Нет, я не форсировал push после сброса, так как были другие ожидающие изменения от других разработчиков, и я не хотел отказываться от их изменений. Мой рефактор закончил работать отлично, поэтому я не собираюсь с этим хлопотать в данный момент, но если мне действительно нужно все вернуть, я определенно буду использовать это. Благодаря! – streetlogics