← До фільтрів та технологій

← До списку лабораторних по Git

Git Лабораторна 10: Повернення до стабільного стану

Технологія: Git

Номер лабораторної: 10 · Рівень: middle

Тема: Скасування локальних змін: restore, checkout, reset

Повний опис / сценарій лабораторної:

Мета: навчитися безпечно скасовувати локальні зміни різного рівня від одного файла до цілого коміту.



Крок 1. Створити нову зміну без коміту.

Команда: cd ~/git_lab1 && echo "temporary change" >> readme.txt



Крок 2. Подивитися diff.

Команда: git diff

Пояснення: бачимо доданий рядок.



Крок 3. Скасувати зміни тільки у цьому файлі.

Команда: git restore readme.txt

Пояснення: файл повернеться до стану останнього коміту.



Крок 4. Зробити зміну, додати її в індекс і потім скасувати зі staged.

Команди: echo "staged change" >> readme.txt; git add readme.txt; git restore --staged readme.txt

Пояснення: команда прибирає файл зі staged але не чіпає робочий каталог.



Крок 5. Залишити одну зміни в робочому каталозі для демонстрації reset.

Команда: echo "for reset demo" >> readme.txt; git add readme.txt; git commit -m "Temp commit for reset demo"



Крок 6. Подивитися історію з короткими хешами.

Команда: git log --oneline -n 3

Пояснення: зафіксуйте хеш попереднього коміту до тимчасового.



Крок 7. Виконати мʼякий reset.

Команда: git reset --soft ХЕШ_ПОПЕРЕДНЬОГО

Пояснення: HEAD рухається назад, але зміни залишаються у staged.



Крок 8. Виконати змішаний reset для очищення staged.

Команда: git reset ХЕШ_ПОПЕРЕДНЬОГО

Пояснення: зміни залишаться тільки у робочому каталозі.



Крок 9. За потреби повністю скасувати локальні зміни.

Команда: git restore readme.txt

Пояснення: будьте обережні, після цього локальні зміни втратяться.



Крок 10. Міні звіт.

Завдання: опишіть різницю між git reset --soft, git reset --mixed та git reset --hard на прикладах.