У чому різниця між 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 restore | git reset |
|---|---|---|
| Працює з файлами | Так | Частково |
| Працює з комітами | Ні | Так |
| Змінює історію | Ні | Так |
| Безпечний для public гілок | Так | Ні |
| Основне призначення | відкат змін | відкат стану |
Коротке формулювання для співбесіди
git restoreвикористовується для скасування змін у файлах і staging area без зміни історії.git resetвикористовується для відкату комітів і стану гілки та може переписувати історію.
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.