Скасування останнього коммітов в git - leading link - відділ розробки

Щоб розуміти як працювати з описаними в цій статті методами, необхідно для початку пояснити деякі речі.

HEAD це по суті покажчик на останній Ком. Після чергового коммітов HEAD перемикається в кінець гілки.

HEAD ^ означає найближчого батька об'єкта. Таким чином HEAD ^^^ вказує на прадіда.

n вказує на батька n, тобто HEAD

2 еквівалентно HEAD ^^ і посилається на діда поточного коммітов.

А тепер перший спосіб. Hard Reset - повністю скасовує останній Комміт і всі зроблені ним зміни.

уявіть дерево станів наступним чином:

Скасування останнього коммітов в git - leading link - відділ розробки

де C той Комміт, який ми хочемо видалити. Наведена вище команда повністю видаляє останній Комміт і всі зміни їм внесені. Новий стан буде виглядати так:

Скасування останнього коммітов в git - leading link - відділ розробки

Другий варіант: Скасування коммітов зі збереженням змін.

Виглядає цей спосіб наступним чином:

Якщо з якихось причин нам треба скасувати останній Комміт, але ми не хочемо втрачати зміни, внесені ним (наприклад якщо Комміт не був завершений або введено невірне повідомлення коммітов), тоді можна використовувати м'який ресет. В такому випадку результатом виконання команди буде наступна структура:

Скасування останнього коммітов в git - leading link - відділ розробки

В обох випадках HEAD вказує на останній Ком. Коли ми виконуємо git reset HEAD

1 тоді Git переміщує покажчик HEAD на один Комміт назад. Але (на відміну від випадку з застосуванням -hard) ми залишаємо файли як вони є.