Иногда возникает необходимость посмотреть всю рабочую директорию в том состоянии, в котором она была на момент определенного коммита. Сделать это очень просто. Вначале надо узнать хеш коммита, например через команду git log. После чего можно переключить рабочую директорию на данный коммит:
git checkout <Хеш коммита>
Однако, перед этой командой нужно сделать две вещи.
Во-первых, нужно закоммитить все изменения, которые есть в рабочей директории, чтобы они не пропали.
Во-вторых, надо посмотреть, в какой ветке идет работа, чтобы после отката назад по истории, без проблем возвратиться в актуальное состояние (ведь по хешу коммита можно напрямую перепрыгнуть на другую ветку, а потом придется вспоминать в какой ветке сидели раньше). Узнать текущую ветку можно командой:
git branch
Та ветка, возле которой стоит звездочка, и является текущей веткой. И именно в конец текущей ветки нужно будет вернуться после просмотра старого сотояния рабочей директории.
Вернуться в самое последнее актуальное состояние можно следующей командой:
git checkout <Имя ветки>
Данная команда переместит рабочую директорию в состояние, которое соответсвует самому последнему (а значит самому актуальному) коммиту в указанной ветке.
Внимание! В интернетах часто пишут, что для возврата к самому актуальному коммиту нужно дать команду:
git checkout HEAD
Но в данном случае такая команда не сработает! Потому что при перепрыгивании к старому коммиту с нужным хешем, указатель HEAD тоже перепрыгивает на данный коммит. И эта команда будет лишена какого-либо смысла.
Если вы забыли, где вы находитесь, всегда можно дать команду:
git status
При нахождении в состоянии старого коммита, эта команда может показывать разные неожиданные сообщения. Например:
HEAD отделён на c9f91ea8
Неотслеживаемые файлы:
(используйте «git add <файл>…», чтобы добавить в то, что будет включено в коммит)
site/.env
site/bootstrap/
site/node_modules/
site/public/
site/storage/
site/vendor/
ничего не добавлено в коммит, но есть неотслеживаемые файлы (используйте «git add», чтобы отслеживать их)
Подобное сообщение может отображаться даже в том случае, если перед переходом на старый коммит все было закоммичено, в stash (кармане) ничего не лежало, и в рабочей директории старого коммита не видно таких файлов или директорий.
Обращать внимания на них не имеет смысла, если вы ничего не меняете в рабочей директории в старом коммите, а только смотрите. После возвращения на последний актуальный коммит, эти сообщения исчезнут, и можно будет продолжить работу с Git в нормальном режиме.