Оригинальный постер гласит:
Лучший ответ, который кто-то мог мне дать, это использовать git revert
X раз, пока я
достичь желаемого коммита.
Итак, скажем, я хочу вернуться к коммиту, которому 20 коммитов, я бы
запустить его 20 раз.
Есть ли более простой способ сделать это?
Я не могу использовать сброс, потому что этот репозиторий открыт.
Нет необходимости использовать git revert
X раз. git revert
может принять
принять диапазон в качестве аргумента, поэтому вам нужно использовать его только один раз, чтобы вернуть диапазон
коммитов. Например, если вы хотите отменить последние 20 коммитов:
git revert --no-edit HEAD~20..
Диапазон фиксации HEAD~20..
является коротким для HEAD~20..HEAD
и означает «начать с 20 th родителя фиксации HEAD и вернуть все коммиты после него до HEAD».
Это вернет последние 20 коммитов, при условии, что ни один из них не является слиянием
коммиты. Если есть коммиты слияния, вы не можете отменить их все одной командой, вам нужно будет отменить их индивидуально с помощью
git revert -m 1 <merge-commit>
Обратите внимание, что я тестировал использование диапазона с git revert
с использованием git версии 1.9.0. Если вы используете более старую версию git, использование диапазона с git revert
может или может не работать.
В этом случае git revert
предпочтительнее, чем git checkout
.
Обратите внимание, что в отличие от этот ответ говорит, что использовать git checkout
, git revert
на самом деле удалит все файлы, которые были добавлены в любой из коммитов, которые вы
возврат , что делает его правильным способом возврата диапазона ревизий.
Документация