Как отменить несколько запросов на объединение сразу и сохранить историю - PullRequest
1 голос
/ 20 марта 2020

У меня есть случай, когда мастер репозитория Github в настоящее время имеет ряд отдельных запросов на извлечение, которые уже были объединены с мастером. Я хочу отменить, скажем, последние 20 из этих запросов на слияние, но сделать это из командной строки и сохранить историю.

Подобный вопрос был помечен как дубликат отменить несколько слияний

Однако ответы, данные как уже существующие, на самом деле не имеют отношения к конкретному c вопросу о том, что происходит, когда все, что вы хотите вернуть, было получено из серии запросов на слияние, которые являются слиянием. Использование опции -m с git revert хорошо для одного слияния за раз, верно? Поэтому я думаю, что ответ заключается в том, что не существует хорошего способа (из командной строки) быстро отменить серию отдельных запросов извлечения, которые были объединены, и сохранить историю? Пожалуйста, поправьте меня, если я ошибаюсь по этому поводу. Если мне придется делать по одному, я мог бы просто использовать консоль Github и щелкнуть по каждой из них.

1 Ответ

1 голос
/ 20 марта 2020

Если вы хотите иметь одну (более позднюю) ревизию, в которой вы отменяете изменения из всех этих слияний, вы можете сделать это следующим образом:

git checkout <id-of-revision> # use the ID of the revision you would like to get your project back to (in terms of content)
git reset --soft <the-branch> # the branch where we want to add a revision to revert all of that
git commit -m "Reverting"
# If you like the results
git branch -f <the-branch> # move branch pointer to this new revision
git checkout <the-branch>
...