Як в Git скасувати останній комміт: два способу
Опубликованно 06.11.2018 08:06
Кожне важлива зміна, яке виробляє програміст, може суттєво вплинути на функціональність проекту. Особливо якщо він розробляється в одному середовищі, а потім тестується в іншому середовищі, що складається з декількох віртуальних машин. Іноді ви можете здійснювати зміни (коміти) у своєму репозиторії 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 буває корисною функцією. Автор: Марія Штернберг 23 Жовтня, 2018
Категория: Техника