Временно переключить рабочую копию на конкретный коммит в git'е

как переключиться на конкретный git commit без потери всех коммитов, сделанных после него?

Я хочу, чтобы локальные файлы были изменены, но база данных коммитов останется нетронутой, только указатель текущей позиции установлен в текущий выбранный коммит.

Я хочу изменить состояние файлов на конкретную фиксацию, запустить проект и по завершении восстановить файлы до последней фиксации.

Как это сделать, не застегивая весь проект папка?

3 ответов


Если вы находитесь в определенной отрасли mybranch, просто вперед и git checkout commit_hash. Затем вы можете вернуться в свою ветку git checkout mybranch. У меня была такая же игра, разделяющая ошибку сегодня:) кроме того, вы должны знать о git bisect.


во-первых, использовать git log чтобы увидеть журнал, выберите нужную фиксацию, запишите хэш sha1, который используется для идентификации фиксации. Далее бегите git checkout hash. После того, как вы закончите,git checkout original_branch. Это имеет то преимущество, что не перемещает головку, она просто переключает рабочую копию на определенную фиксацию.


В дополнение к другим ответам здесь, показывая вам, как git checkout <hash-that-you-want> стоит знать, что вы можете вернуться туда, где вы использовали git checkout @{-1}. Это часто удобнее, чем git checkout original-branch.