Если были фиксации и много изменений начиная с более ранней фиксации, есть ли простой способ вернуться все к точному состоянию той более ранней фиксации?
Если так, действительно ли возможно легко переключиться назад на текущее состояние, если я должен так требовать также?
Я понял, что эта старая фиксация является на самом деле корректной, и хотят поддержать все изменения с тех пор только для ссылки, но вся будущая работа будет основана на этой старой фиксации.
Похоже, вы хотите поместить текущую работу в ветку:
git branch saved_work
git reset --hard previouscommit
Теперь ваша ветка saved_work
содержит всё после previouscommit
, а master
перематывается на previouscommit
.
Зафиксируйте текущие изменения:
git commit
Затем проверьте старый коммит:
git checkout yourcommit
Добавление опции -f уничтожит все локальные изменения.
Поскольку вы хотите вернуться в более раннее состояние:
git stash
git checkout -b new_branch <tree-ish>
Вышеупомянутое сохранит ваши незафиксированные изменения и позволит вам создать новую ветвь в конкретном коммите. Работайте так, как хотите, и позже, когда вы захотите вернуться в более раннее состояние:
git stash
git checkout earlier_branch