Як у Git скасувати останній коміт: два способи

Як у Git скасувати останній коміт: два способи

Кожна важлива зміна, яку виробляє програміст, може істотно вплинути на функціональність проекту. Особливо якщо він розробляється в одному середовищі, а потім тестується в іншому середовищі, що складається з декількох віртуальних машин. Іноді ви можете робити зміни (комміти) у своєму репозиторії Git, але потім усвідомлюєте, що зробили помилку. Тоді у вас виникає необхідність виправити їх у своєму проекті, використовуючи командний рядок, щоб скасувати останній коміт в Git і знову змусити ваш код працювати.

Коміти як тимчасова шкала

Насамперед важливо зазначити, що Git не має традиційної системи "скасувати", як у текстовому редакторі. Крім того, у нього є своя власна номенклатура для операцій подібного типу. Ця номенклатура включає такі терміни, як reset, revert, checkout, clean тощо. Якщо думати про Git як про утиліт управління часовою шкалою, комміти - це моментальні знімки моменту часу або точки на часовій шкалі історії проекту. Таким чином, подивитися останній коміт - це як відправитися в подорож у часі. Крім того, за допомогою гілок можна керувати кількома часовими рамками.


Використання команди git log

Вся ідея будь-якої системи контролю версій полягає в тому, щоб зберігати копії проекту, щоб вам ніколи не доводилося турбуватися про непоправну помилку в коді. Часто буває так, що створена зміна не має очікуваного результату. Іноді вам потрібно побачити зміни і проаналізувати поведінку проекту до і після останнього комміту. Після того як ви створили історію проекту, ви можете подивитися в ній будь-який коміт. Коли необхідно зробити видалення останнього комміта в Git, однією з кращих утиліт для перегляду історії сховища є команда git log. Наприклад, git log --oneline показує список коммітів у гілці.

Перевірка гешу

Один із способів скасувати останній коміт в Git, - використовувати хеш. Отримати хеш можна за допомогою команди git log. Перед тим як зробити це, потрібно вибрати потрібну гілку зі змінами. Для того щоб скасувати останній коміт в Git, знадобиться вибрати правильну гілку, але не завжди зрозуміло як це зробити. Але в Git це досить просто. Кожен коміт має унікальний хеш-ідентифікатор SHA-1. За замовчуванням у git-журналі будуть відображатися лише комміти для вибраної гілки. Цілком можливо, що той, який ви шукаєте, знаходиться зовсім на інший. Ви можете переглянути всі коміти по всіх гілках, виконавши команду git log --branches = *. Щоб перевірити конкретний commit у Git, який, на вашу думку, був останньою робочою версією, ви можете ввести наступне: git checkout <commit hash>. Така операція призведе до того, що робочий репозиторій буде відповідати стану цього комміту. Після аналізу конкретного commit в Git, якщо ви потім вирішите залишитися в цьому стані, то зможете скасувати і останній коміт.

Як скасувати помилковий коміт

Якщо ви хочете скасувати останній коміт, ви можете використовувати < commit hash >, який отримуєте з команди git log, а потім написати таку команду: git revert <commit hash>. Вона створить новий коміт зі словом "Відновити" на початку повідомлення. Після цього, якщо ви перевірите свій статус сховища, то зауважте, що відключили HEAD в комміті, який тестували раніше. Але навряд чи ви хочете бачити це повідомлення. Тому, щоб виправити ситуацію і підключити HEAD до робочого сховища, ви повинні перевірити гілку, над якою працюєте і ввести команду: git checkout <current branch>.

Різниця між git reset і git revert

Існують й інші способи скасувати останній коміт в Git. Команда git revert скасовує його, створюючи новий, який представляє більш ранній стан сховища. Але існує ще й git reset. Важливо розуміти різницю між git reset і git revert при використанні Git. Команда git reset скасовує коміт, видаляючи попередні зі сховища. Вона також перезавантажує Git HEAD до більш раннього кімміту, як було описано вище.

Як вибрати команду для скасування змін

Залежно від того, який варіант використовується, деякі історії Git можуть бути втрачені. Команда git revert скасовує коміт, створюючи новий, який представляє більш ранній стан сховища. Це не призведе до втрати історії Git. Отже, важливо пам 'ятати, що існує кілька способів "скасувати" в проекті Git. Варіант з git reset найкраще використовувати для скасування локальних приватних змін. А git revert - найкращий інструмент для скасування загальних публічних змін. Кожна з цих команд має свою власну детальну документацію, з якою можна ознайомитися окремо. Слід пам 'ятати, що як тільки зміни були зроблені, вони зазвичай залишаються постійними, тому подивитися останній коміт Git буває корисною функцією.