Git: Как отменить / отменить массовое слияние? - PullRequest
0 голосов
/ 25 сентября 2019

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

Моя проблема в том, что у меня очень старая ветка, ветвь А (скажем, из 2017 года).Я хотел обновить его, поэтому слился с мастером (который актуален около 2019 года) и вытолкнул.Это добавило очень большое количество коммитов в историю.После того, как мне сказали, мне нужно обновить ветвь A веткой B вместо master ... как я могу избавиться только от основного слияния и вернуть ветку A в исходное состояние?

Может быть, я должен просто использовать "git revert X" и съесть ужасную историю, которая уйдет?

В большинстве ответов, которые я видел, упоминалось о проверке "последнего известного блага" перед слиянием, но я не знаю этот хеш коммита, и история теперь содержит буквальные годы коммитов из моегослияния.Я знаю хеш коммита моего коммит-слияния - назовем его X. Я предположил, что коммит LKG тогда будет X ^ 1, что я рассмотрел с помощью «git log X ^ 1».Однако я хочу быть уверен, что это правильно, прежде чем изменить историю веток, и мне очень трудно смотреть на коммиты вокруг X ^ 1.

1 Ответ

1 голос
/ 25 сентября 2019

Если вы действительно хотите избавиться от всех тех ревизий, которые пришли от мастера, как в , с которым вы никогда не сливались , то вам следует git reset --hard (предоставив идентификатор ревизии, где Aбыло раньше ... проверьте git reflog или журнал ветки) ... тогда это похоже на то, что вы сделали никогда не происходило .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...