Триває набір нової групи на курс Enterprise Patterns! Старт курсу 02.12.2024. Реєструйтеся зі знижкою 30% до 31.10.2024!
Дізнатися більше
22.02.2024
8 хвилин читання

Для чого використовують команду Git Revert

Сьогодні ми розберемося, що робить git revert і як правильно цим користуватися. І в цьому нам допоможе матеріал компанії FoxmindED. Отже…

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

Однак одна з основних переваг Git Revert полягає в тому, що вона дає змогу скасовувати зміни, не видаляючи їх з історії проєкту. Це допомагає зберегти структуру і послідовність змін, що значно полегшує їх відстеження та аналіз.

На відміну від git reset, яка видаляє коміти і змінює історію, git revert зберігає минулі коміти і створює нові, що скасовують зміни. Це запобігає потенційним проблемам синхронізації, які можуть виникнути при зміні історії в загальному сховищі.

Як працює git revert

Розглянемо детальніше, як відбувається процес скасування.

  1. Вибір коміта для скасування: розробник визначає конкретний коміт, зміни якого необхідно скасувати. Це може бути коміт, який вніс помилкові зміни або призвів до небажаних результатів.
  1. Запуск git revert: розробник запускає команду git revert, вказуючи ідентифікатор цільового коміту:

$ git revert <commit_id>

  1. Створення зворотного коміту: Git створює новий коміт, який скасовує зміни, внесені в обраний коміт. Він зберігає цілісність історії проекту, надаючи можливість повернутися до попереднього стану, не видаляючи коміти.
Наші Start Course дають змогу систематизувати отримані самостійно знання та стають міцним фундаментом для подальшого розвитку в обраній сфері.
Обрати курс

Розглянемо приклади та сценарії використання:

  • Відкат помилкових змін: припустимо, що розробник вніс зміни, які викликали проблеми. З використанням git revert, можна безпечно відкотити ці зміни і зберегти робочу версію проєкту.

$ git revert <commit_identifier_with_errors>

  • Керування змінами в загальному репозиторії: у загальних проєктах, де безліч розробників вносить зміни, git revert дає змогу скасувати зміни в певному коміті, зберігаючи при цьому узгодженість роботи над проєктом. Після цього розробник може з легкістю поділитися своїми змінами, не зачіпаючи інші частини проекту.

Скасування змін

Розглянемо покрокову інструкцію з використання git revert і дізнаємося, як скасувати цю команду за необхідності.

Крок 1: Визначення коміту для скасування

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

Крок 2: Запуск git revert

Використовуючи команду git revert, вказуємо ідентифікатор цільового коміту:

$ git revert <commit_id>

Шаг 3: Розв’язання конфліктів (якщо необхідно)

Якщо команда виявляє конфлікти, вона призупинить процес. Розробник може використовувати інструменти Git, наприклад, git status для перегляду файлів із конфліктами, а потім git add і git commit для завершення вирішення конфліктів:

$ git add <resolved_files>

$ git commit

Git really hates changing history

Крок 4: Створення нового коміту

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

Якщо ж у процесі роботи з командою виникла необхідність скасувати сам процес, можна скористатися командою:

$ git revert –abort

Це скасує операцію git revert і поверне репозиторій до початкового стану перед запуском команди. Припустимо, потрібно скасувати останній коміт:

$ git revert HEAD

Розробник вирішує конфлікти, якщо вони виникають, і зберігає зміни. Git створить новий коміт, що скасовує останній коміт.

  1. Конфлікти під час злиття: якщо зміни, які ви хочете скасувати, не поєднуються з поточним станом проєкту, можуть виникнути конфлікти, які потрібно буде вирішити вручну.
  1. Зміни в загальних файлах: скасування змін може вплинути і на загальні файли, які використовують інші члени команди;
  • Тестування: після завершення git revert проведіть тестування, щоб переконатися в тому, що зміни не призвели до появи нових помилок.
  • Комунікація з командою: якщо зміни стосуються загальних компонентів, важливо проінформувати членів команди про скасування змін.
  • Використання гілок: у разі великих змін або невизначеності краще використовувати гілки для тестування git revert, перш ніж впроваджувати зміни в основну гілку.
  • Відкат кількох комітів: за необхідності скасування серії комітів розгляньте використання git revert для кожного коміта або використання комбінації git revert і git revert –abort.

Git revert кількох комітів

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

  • Випадково зробили кілька помилок поспіль.
  • Хочете повернутися до більш ранньої версії проєкту, не втрачаючи історію змін.
  • Працюєте з гілкою, яка містить небажані зміни.

Для цього:

  1. Визначте ідентифікатори першого й останнього комітів у серії, яку ви хочете скасувати.
  1. Використовуйте команду git revert, вказуючи діапазон комітів, який вам потрібно скасувати:

$ git revert <first_commit>^..<last_commit>

Тут ^ використовується для включення першого коміта в діапазон.

  1. Якщо виникають конфлікти, вирішіть їх вручну і продовжуйте процес:

$ git revert –continue

  1. Також Git створить нові коміти для кожного скасованого коміту в серії.

$ git revert abc123^..xyz789

Ця команда скасує зміни, внесені комітами з abc123 до xyz789, включно.

  • Уважно вибирайте діапазон: переконайтеся, що діапазон комітів коректний, щоб уникнути небажаних змін.
  • Працюйте послідовно: у разі виникнення конфліктів розв’язуйте їх по черзі для кожного коміту, щоб уникнути плутанини.
  • Перед використанням команди для скасування кількох комітів рекомендується ознайомитися з прапорами команди та її впливом на історію змін.

Відмінності між git revert і git reset

Git revert і git reset – це дві різні команди в Git, що надають різні підходи до скасування змін і управління історією проєкту. Розглянемо ключові відмінності та сценарії використання кожної з цих команд.

Отже, чому і коли краще використовувати одну команду перед іншою?

  • git revert краще використовувати, коли необхідно безпечно скасувати зміни, особливо в загальному сховищі, щоб уникнути проблем із синхронізацією.
  • git reset слід використовувати, коли необхідно видалити коміти з історії, особливо в локальному сховищі, наприклад, під час налагодження або переписування історії. Однак слід бути обережним, щоб не втратити важливі зміни.

Просунуте використання

Розглянемо просунуті техніки використання команди та поради щодо уникнення частих помилок.

  1. Робота з множинними комітами
  • Скасування серії комітів: використовуйте діапазон комітів для скасування серії змін:

$ git revert <first_commit>^..<last_commit>

Цей діапазон охоплює тільки зміни між зазначеними комітами, включно зі змінами в останньому з них.

  • Автоматизація процесу: сценарій для скасування останніх N комітів:

$ for i in {1..N}; do git revert HEAD~$i; done

Git revert
  1. Складні сценарії скасування
  • Робота з гілками: створення тимчасової гілки для проведення скасування, а потім злиття змін (забезпечує ізольоване середовище для роботи над скасуванням, що зменшує ризик внесення несподіваних змін в основну гілку):

$ git branch temp-revert

$ git checkout temp-revert

$ git revert <коміти>

$ git checkout main

$ git merge temp-revert

  • Скасування змін у конфліктних файлах: ручне вирішення конфліктів під час скасування змін у конфліктних файлах.
Підпишіться на наш Ютуб-канал! Корисні відео для програмістів чекають на вас! YouTube
Оберіть свій курс програмування! Шлях до кар’єри програміста починається тут! Подивитись

Поради щодо уникнення помилок:

  • Ретельно аналізуйте коміти для скасування, щоб уникнути втрати важливих змін.
  • Використовуйте тимчасові гілки для скасування змін в ізольованому оточенні перед злиттям в основну гілку.
  • Використовуйте прапор –no-commit, щоб відкласти створення коміту і внести додаткові зміни перед остаточним комітом:

$ git revert –no-commit <commit>

$ # Making additional changes

$ git commit -m “Reverting a commit with additional changes”

Просунуте використання git revert вимагає уважності та розуміння потенційних наслідків змін. Ефективне використання цих технік забезпечить гнучкість і контроль над історією проєкту.

Висновок

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

FAQ
Що робить команда git revert?

Команда git revert створює новий коміт, який скасовує зміни, внесені попереднім комітом, не зачіпаючи історію репозиторію.

Чи можна скасувати revert у Git?

Так, скасувати дію revert можна, виконавши revert на коміт, створений командою revert.

У чому різниця між git revert і git reset?

git reset змінює історію комітів, видаляючи або переставляючи їх, тоді як git revert зберігає історію, додаючи новий коміт для скасування змін.

Коли слід використовувати git revert?

Використовувати git revert слід, коли необхідно скасувати зміни в загальнодоступному репозиторії, зберігаючи історію змін.

Чи може git revert скасувати кілька комітів?

Так, можна скасувати кілька комітів, використовуючи git revert послідовно для кожного коміта або застосовуючи діапазон комітів.

Які наслідки використання git revert для спільної роботи?

Використання git revert дає змогу безпечно скасовувати зміни без ризику втрати даних або порушення історії репозиторію, що спрощує спільну роботу.

А ви часто використовуєте команду git revert? Поділіться досвідом у коментарях нижче!

Додати коментар

Ваш імейл не буде опубліковано. Обов'язкові поля відзначені *

Зберегти моє ім'я, імейл та адресу сайту у цьому браузері для майбутніх коментарів