Skip to main content

У чому різниця між git restore і git reset?

git restore і git reset використовуються для скасування змін, але працюють на різних рівнях і з різними наслідками.


git restore - відкат файлів

git restore призначений тільки для роботи з файлами.

Що робить:

  • скасовує зміни в робочому дереві
  • прибирає файли зі staging area (unstage)
  • не працює з історією комітів
  • не змінює історію

Приклади:

bash
git restore file.txt # відкотити файл у working directory git restore --staged file.txt # прибрати файл зі staging area

Використовується, коли потрібно:

  • скасувати локальні зміни у файлі
  • прибрати файл з індексу перед комітом

git reset - відкат стану та історії

git reset працює з вказівником гілки та комітами.

Що робить:

  • переміщує вказівник гілки (HEAD)
  • може змінювати staging area
  • може змінювати working directory
  • може переписувати історію

Режими:

bash
git reset --soft # змінює тільки історію git reset --mixed # історія + staging area (типово) git reset --hard # історія + staging area + working directory

Використовується, коли потрібно:

  • скасувати коміт
  • відкотити гілку назад
  • повністю видалити зміни

Ключова різниця

Критерійgit restoregit reset
Працює з файламиТакЧастково
Працює з комітамиНіТак
Змінює історіюНіТак
Безпечний для public гілокТакНі
Основне призначеннявідкат змінвідкат стану

Коротке формулювання для співбесіди

git restore використовується для скасування змін у файлах і staging area без зміни історії. git reset використовується для відкату комітів і стану гілки та може переписувати історію.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.