Команди Git

git restore

git restore: відновити (англ. restore) робоче дерево та/або область підготовки

git restore повертає файли до відомого стану. За замовчуванням команда замінює файли робочого дерева вмістом області підготовки. Якщо в області підготовки пусто, результат буде таким самим, як в останньому коміті.

З опцією --staged команда скидає область підготовки до стану останнього коміту (або коміту, вказаного через --source), а робоче дерево не чіпає. Саме так можна прибрати зміни з області підготовки, не втрачаючи своїх правок.

Команда git restore з'явилася в Git 2.23.0 і стала прицільним способом скасувати локальні зміни чи прибрати файли з області підготовки. Якщо звичніше робити все через git reset — звичку можна лишити, але git restore важче використати не за призначенням: команда чіпає лише робоче дерево та область підготовки, а не історію комітів.

Сценарії використання

  1. Відновити робоче дерево (в області підготовки пусто): у файлах з'явилися зміни, які не потрібні. Поверни робоче дерево до останнього коміту.

    Рішення: git restore --worktree . АБО просто git restore ., бо режим --worktree увімкнений за замовчуванням.

  2. Відновити область підготовки, зберегти робоче дерево: в область підготовки потрапило забагато. Поверни область підготовки до останнього коміту, а правки в робочому дереві залиш.

    Рішення: git restore --staged .

  3. Відновити робоче дерево, зберегти область підготовки: потрібне вже підготовлено, а потім додалися нові правки, які не подобаються. Поверни робоче дерево до того, що лежить в області підготовки.

    Рішення: git restore --worktree . АБО git restore .

  4. Відновити область підготовки та робоче дерево: хочеться викинути все — і підготовлене, і ні. Поверни і те, і те до останнього коміту.

    Рішення: git restore --worktree --staged .

Приклади

Скасувати зміни в конкретному файлі:

git restore README.md

Скасувати зміни в усіх файлах поточної директорії (шлях . означає «тут»):

git restore .

Прибрати файл з області підготовки, але залишити його правки в робочому дереві:

git restore --staged README.md

Прибрати з області підготовки все й повернути робоче дерево до останнього коміту:

git restore --worktree --staged .

Відновити файл із конкретного коміту.

git restore --source a1b2c3d4 README.md

Вибрати в інтерактивному режимі, які зміни залишити, а які скасувати:

git restore --patch

Або коротша форма:

git restore -p