Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Відкат Певного Коміту | Скасування Змін
Основи Git

bookВідкат Певного Коміту

git revert

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

git revert <commit-hash>

Як видно, замість використання HEAD для скасування останнього коміту, тепер потрібно вказати хеш конкретного коміту (ID коміту), який необхідно скасувати (замініть <commit-hash> на дійсний хеш).

Детальніше про хеші

Пам’ятайте, кожен коміт має унікальний ідентифікатор, який фактично є рядком із цифр (0-9) та літер (a-f), тобто шістнадцятковим рядком. Цей 40-символьний рядок називається хешем. Розглянемо наш останній коміт:

Ось його хеш:

1b00736255dca7d78659a9971d0c30fba0eb3075

Note
Примітка

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

Хеш коміту обчислюється за допомогою SHA-1 алгоритму на основі такої інформації:

  • Повідомлення коміту;
  • Дата;
  • Автор;
  • Знімок робочого дерева;
  • Хеш батьківського коміту (або комітів, якщо батьків декілька).

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

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

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

Note
Примітка

Під час редагування коміту його ідентифікатор змінюється, тому не рекомендується використовувати команду git commit --amend при роботі з віддаленими репозиторіями.

Приклад робочого процесу

Перш ніж вирішити, який коміт скасувати, розглянемо чотири останні коміти:

Можна побачити, що є коміт, у якому було додано файл recipe.txt. Скасуємо (revert) цей коміт, створивши новий коміт, який відмінить ці зміни та фактично видалить файл. У моєму випадку його хеш такий:

043b634d76a7a7744757350512b6367417c29e0

Однак ваш хеш для цього коміту буде іншим. Тепер можна скасувати цей коміт:

Замініть цей хеш на ваш хеш.

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

Далі коректно закриваємо текстовий редактор і переглядаємо зміни, внесені в цьому останньому коміті:

7 видалень було виконано, тобто всі 7 рядків файлу були видалені. Тепер перевіримо, чи сам файл був видалений, перелічивши всі неприховані файли та каталоги у нашій робочій директорії:

Файл recipe.txt успішно видалено.

question-icon

Відповідність дій відповідним командам.


Revert the latest commit:

Revert a specific commit:

Unstage changes:

Revert unstaged changes:

Unstage changes and then revert the changes in the working directory:

Overwrite the existing commit:

Натисніть або перетягніть елементи та заповніть пропуски

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 3. Розділ 5

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Suggested prompts:

What happens if I revert a commit that is not the latest one?

Can I revert multiple commits at once?

What should I do if I get a merge conflict during revert?

Awesome!

Completion rate improved to 3.57

bookВідкат Певного Коміту

Свайпніть щоб показати меню

git revert

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

git revert <commit-hash>

Як видно, замість використання HEAD для скасування останнього коміту, тепер потрібно вказати хеш конкретного коміту (ID коміту), який необхідно скасувати (замініть <commit-hash> на дійсний хеш).

Детальніше про хеші

Пам’ятайте, кожен коміт має унікальний ідентифікатор, який фактично є рядком із цифр (0-9) та літер (a-f), тобто шістнадцятковим рядком. Цей 40-символьний рядок називається хешем. Розглянемо наш останній коміт:

Ось його хеш:

1b00736255dca7d78659a9971d0c30fba0eb3075

Note
Примітка

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

Хеш коміту обчислюється за допомогою SHA-1 алгоритму на основі такої інформації:

  • Повідомлення коміту;
  • Дата;
  • Автор;
  • Знімок робочого дерева;
  • Хеш батьківського коміту (або комітів, якщо батьків декілька).

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

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

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

Note
Примітка

Під час редагування коміту його ідентифікатор змінюється, тому не рекомендується використовувати команду git commit --amend при роботі з віддаленими репозиторіями.

Приклад робочого процесу

Перш ніж вирішити, який коміт скасувати, розглянемо чотири останні коміти:

Можна побачити, що є коміт, у якому було додано файл recipe.txt. Скасуємо (revert) цей коміт, створивши новий коміт, який відмінить ці зміни та фактично видалить файл. У моєму випадку його хеш такий:

043b634d76a7a7744757350512b6367417c29e0

Однак ваш хеш для цього коміту буде іншим. Тепер можна скасувати цей коміт:

Замініть цей хеш на ваш хеш.

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

Далі коректно закриваємо текстовий редактор і переглядаємо зміни, внесені в цьому останньому коміті:

7 видалень було виконано, тобто всі 7 рядків файлу були видалені. Тепер перевіримо, чи сам файл був видалений, перелічивши всі неприховані файли та каталоги у нашій робочій директорії:

Файл recipe.txt успішно видалено.

question-icon

Відповідність дій відповідним командам.


Revert the latest commit:

Revert a specific commit:

Unstage changes:

Revert unstaged changes:

Unstage changes and then revert the changes in the working directory:

Overwrite the existing commit:

Натисніть або перетягніть елементи та заповніть пропуски

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 3. Розділ 5
some-alt