Вернитесь к определенной фиксации, затем вернитесь к настоящему - программирование

Вернитесь к определенной фиксации, затем вернитесь к настоящему

Я хотел бы видеть файл из определенного коммита в прошлом, я думаю о git reset --hard, но я не смогу увидеть коммиты, выходящие за пределы этого коммита. Как вернуться к фиксации (вместе с состоянием файлов), взглянуть на файлы, перейдите к настоящему снова?

4b9b3361

Ответ 1

Предположим, что ваша текущая ветвь master, а старая фиксация - a1b2c3, затем вы можете изменить все файлы в рабочем дереве на старый commit с помощью:

git checkout a1b2c3

... и вернитесь к master с помощью:

git checkout master

Этот способ пересказки в вашей истории git (например, проверка фиксации с его именем объекта, также известная как хэш или SHA1sum) очень полезна для поиска предыдущей хорошей фиксации для git bisect, например, так как он не будет перемещать ваши ветки.

Одна вещь, о которой нужно помнить, это то, что вы получите предупреждение, которое может быть запутано, когда вы это сделаете: если вы проверите фиксацию с ее именем объекта (a1b2c3), который перенесет вас в состояние, известное как "отсоединенный HEAD", где HEAD, который обычно представляет вашу текущую ветвь, вместо этого указывает непосредственно на конкретную фиксацию. Это не о чем беспокоиться - это очень полезно для перемещения в вашей истории, но это означает, что если вы создадите новые коммиты при отсоединении HEAD, они не будут перемещать ветвь вперед.


fork0 указывает в комментарии ниже потенциально полезного ярлыка git checkout -, который будет проверять предыдущую ветвь или зафиксировать, на которую указывает HEAD.