К сожалению, git не сохраняет историю промежуточного хранения автоматически, нет прямого способа восстановить индекс до одного из его предыдущих состояний.
В будущем вот некоторые действия, которые вы можете предпринять:
- чаще коммит
вариант: коммит, затем откат:
# add stuff :
git add ... / git add -p ...
git commit -m "work in progress"
git reset --soft HEAD^
это добавит созданный коммит в reflog текущей ветки,
использование git reset --soft
сохранит область подготовки
использование git stash && git stash apply
git stash
создает два коммита:
- один длясодержимое области подготовки,
- один для содержимого всех измененных файлов
Вот выходные данные команды:
$ git stash && git stash apply
Saved working directory and index state WIP on master: 7475d1d {message}
On branch master
Your branch is up to date with 'origin/master'.
Changes to be committed:
[...]
вот как выглядят коммиты:
$ git log --oneline --graph stash@{0}
* 79d9cd7 (refs/stash) WIP on master: 7475d1d {message} # <- full stash
|\
| * 43f3da0 index on master: 7475d1d {message} # <- staging area's content
|/
* 7475d1d (HEAD -> master, origin/master) {message} # <- current active commit
|\
...