Ответ 1
Вы должны увидеть D с git reflog
.
См. статью .
Единственные коммиты времени фактически удаляются, если вы git gc --prune (так что будьте осторожны с этим!).
Если вы запустили git reflog прямо сейчас в репозитории, в котором вы работали, вы увидите много изменений, которые выглядят примерно так:
c5c3a82... [email protected]{0}: pull origin featureB: Merge made by recursive.
49d0608... [email protected]{1}: reset --hard HEAD^: updating HEAD
3ed01b1... [email protected]{2}: pull origin featureA: Merge made by recursive.
49d0608... [email protected]{3}: pull origin bugfixJ: Merge made by recursive.
854d44e... [email protected]{4}: commit: Add more cowbell to foo.c
6dbc22d... [email protected]{5}: pull origin bugfixI: Merge made by recursive.
9bdb763... [email protected]{6}: commit: Remove weevils
8518f9d... [email protected]{7}: checkout: moving from wickedfeature to master
Эти строки можно разбить на 4 части:
- commit hash,
- зафиксировать указатель,
- действие,
- и дополнительную информацию.
Если мы хотим вернуть фиксацию, которая была потеряна в
[email protected]{1}
, мы могли бы простоgit reset --hard [email protected]{2}
.
Теперь наша текущая ветка (и рабочая копия) устанавливается в состояние репозитория до того, как мы сделали reset.Если бы мы хотели просто посмотреть, что это за состояние, мы могли бы
git checkout -b temp [email protected]{2}
(илиgit checkout [email protected]{2}
, если у вас есть git 1.5.0 и выше).