Оригінальна публікація: Git Revert Commit – How to Undo the Last Commit

Скажімо, ви працюєте над своїм кодом у Git і щось пішло не за планом. Тож тепер вам потрібно скасувати свій останній коміт. Але як це зробити? Давайте дізнаємось!

Існує два можливі способи скасувати ваш останній коміт. У цій статті ми розглянемо їх обидва.

Команда revert

Команда revert створить коміт, який скасовує зміни цільового коміту. Ви можете використовувати її для скасування останнього коміту таким чином:

git revert <commit to revert>

Ви можете знайти назву коміту, який потрібно скасувати, за допомогою git log. Перший виведений комміт і є останнім створеним комітом. Тоді ви можете скопіювати звідти буквено-цифрове ім’я та використати його в команді revert .

A diagram showing that the git revert command creates a new commit to revert previous changes.
На рисунку кожне коло представляє коміт.

Команда reset

Ви також можете скористатися командою reset, щоб скасувати останній коміт. Але будьте обережні: це змінить історію комітів, тому вам варто використовувати її уважно. Вона перемістить HEAD, робочу гілку, до вказаного коміту та відкине все після:

git reset --soft HEAD~1

Параметр --soft означає, що ви не втратите незафіксовані зміни, які можете мати.

A diagram showing that git reset --soft will change your commit history, but will keep any unstaged changes you have.
На рисунку кожне коло представляє коміт.

Якщо ви бажаєте відмінити останній комміт, а також видалити всі незафіксовані зміни, ви можете скористатися параметром --hard :

git reset --hard HEAD~1

Це скасує останній коміт, а також будь-які незафіксовані зміни.

A diagram showing that git reset --hard will change your commit history, but will also remove any unstaged changes you have.
На рисунку кожне коло представляє коміт.

Що і коли краще використовувати: reset чи revert?

Вам варто використовувати команду reset тільки у випадку, якщо коміт, який ви збираєтеся відмінити, існує лише локально. Ця команда змінює історію комітів і може перезаписати історію, від якої залежать віддалені учасники команди.

Команда revert натомість створює новий коміт, який скасовує зміни, тому якщо коміт, який потрібно відмінити, вже був відправлений в спільний репозиторій, краще використовувати revert, оскільки дана команда не перезаписує історію комітів.

Підсумки

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

Тепер, якщо ви помітите, що останній коміт містить помилку або не повинен був бути зроблений, ви знаєте, як виправити це!