>_ IzzyLab

Практическое задание

Откати файл и в индексе, и в рабочем дереве

сложно

В /root/repo файл f.txt в последнем коммите содержит v1. Потом его изменили на v2 и добавили в индекс (git add), а затем ещё раз изменили рабочую копию на v3 (без добавления). Сейчас три версии разошлись: коммит — v1, индекс — v2, рабочее дерево — v3. Верни f.txt полностью к версии из последнего коммита: и в индексе, и в рабочем дереве должно снова быть v1. Историю коммитов не трогай.

Что потренируешь:
  • git restore
  • индекс
  • рабочее дерево
  • staging area
  • откат файла

Разбор темы

В git у файла три состояния: версия в последнем коммите (HEAD), версия в индексе (staging area) и версия в рабочем дереве — и они могут разойтись. git restore умеет восстанавливать файл в обеих рабочих областях, но по умолчанию трогает только рабочую копию, беря содержимое из индекса. Чтобы одновременно сбросить и индекс, и рабочее дерево к версии из коммита, у команды есть два отдельных флага области, задающих, куда именно писать; применяются они вместе. Историю коммитов restore при этом не трогает.

Что проверяется

  1. индекс = v1
  2. рабочее дерево = v1
  3. история цела

Как это выглядит