Я хотел бы видеть файл из определенного коммита в прошлом, я думаю о git reset --hard
, но я не смогу увидеть коммиты, выходящие за пределы этого коммита. Как вернуться к фиксации (вместе с состоянием файлов), взглянуть на файлы, перейдите к настоящему снова?
Вернитесь к определенной фиксации, затем вернитесь к настоящему
Ответ 1
Предположим, что ваша текущая ветвь master
, а старая фиксация - a1b2c3
, затем вы можете изменить все файлы в рабочем дереве на старый commit с помощью:
git checkout a1b2c3
... и вернитесь к master
с помощью:
git checkout master
Этот способ пересказки в вашей истории git (например, проверка фиксации с его именем объекта, также известная как хэш или SHA1sum) очень полезна для поиска предыдущей хорошей фиксации для git bisect
, например, так как он не будет перемещать ваши ветки.
Одна вещь, о которой нужно помнить, это то, что вы получите предупреждение, которое может быть запутано, когда вы это сделаете: если вы проверите фиксацию с ее именем объекта (a1b2c3
), который перенесет вас в состояние, известное как "отсоединенный HEAD", где HEAD
, который обычно представляет вашу текущую ветвь, вместо этого указывает непосредственно на конкретную фиксацию. Это не о чем беспокоиться - это очень полезно для перемещения в вашей истории, но это означает, что если вы создадите новые коммиты при отсоединении HEAD
, они не будут перемещать ветвь вперед.
fork0 указывает в комментарии ниже потенциально полезного ярлыка git checkout -
, который будет проверять предыдущую ветвь или зафиксировать, на которую указывает HEAD
.