В GitHub я случайно слил не ту ветку в master.(вероятно, от скольжения пальца при выборе из выпадающего списка) Слияние было завершено и передано, прежде чем я осознал свою ошибку.
Я смотрел:
Возврат плохогоgit merge из GitHub
Github: изменения, игнорируемые после возврата
GitHub, возврат или сброс?
Возврат коммита git merge, затем возврат назад
Github Revert.Неуверен в истории
Но никто из них не смог успешно решить проблему, и, если я чего-то не понял, все они указывают на то, что откат должен был отменить неудачное слияние, оставив меня готовым вновь слитьправильная ветвь позже.
Моя структура такова:
/master
/dev_2.0
/test_2.0
/dev_3.0
/test_3.0
Все ветви разветвлены от /master
.В каждом тестовом выпуске dev_x.0
переводится в test_x.0
, а в каждом финальном выпуске продукта test_x.0
объединяется в master
.
У нас есть тег (назовите его test_tag_2.0
) в ветви test_2.0
, который отражает ветку test_2.0
во время развертывания.Версия 2.0 запущена в производство и завершена, 3.0 находится в стадии разработки.
/master
, для нас, используется исключительно для развернутого кода и не затрагивается никем, кроме меня.В мастере не существует опасности последующих коммитов.В test_2.0
.
дальнейших разработок не ведется. Я хотел откатить неудачное слияние (test_3.0
-> master
) до состояния, в котором оно находилось до слияния, и выполнитьправильное слияние (test_2.0
-> master
)
В соответствии с рекомендациями по нескольким темам, касающимся переполнения стека, я выполнил сброс в локальном репо, чтобы отменить неудачный коммит, и перенес его на удаленный сервер.В GitHub это показывает успешное возвращение в историю.gitk также показывает возврат.
Вот команда, которую я сделал:
`git reset --hard HEAD@{1}`
Затем отправил на удаленный
Однако теперь, когда я сравниваю master с неверной веткой источникаtest_3.0
, это показывает, что ведущий является текущим со всеми изменениями в этой ветви.Разве возврат не должен был отменить это?
Это также все еще показывает, что мастер является текущим с правильной ветвью test_2.0
, после возврата, который я выполнил.Разве это не должно также показывать, что это не так?
Поэтому конечный результат, который я хочу, состоит в том, чтобы ветвь master
была полностью идентичной во всех отношениях, как это было до неудачного слияния,и для успешного слияния из правильной ветви test_2.0
в master
.