Відкат Певного Коміту
git revert
Як вже було зазначено, для скасування певного коміту використовується команда git revert
. Ця команда створює новий коміт, який скасовує зміни, внесені зазначеним комітом. Базовий синтаксис виглядає так:
git revert <commit-hash>
Як видно, замість використання HEAD для скасування останнього коміту, тепер потрібно вказати хеш конкретного коміту (ID коміту), який необхідно скасувати (замініть <commit-hash>
на дійсний хеш).
Детальніше про хеші
Пам’ятайте, кожен коміт має унікальний ідентифікатор, який фактично є рядком із цифр (0-9) та літер (a-f), тобто шістнадцятковим рядком. Цей 40-символьний рядок називається хешем. Розглянемо наш останній коміт:
Ось його хеш:
1b00736255dca7d78659a9971d0c30fba0eb3075
У вас буде інший хеш для цього коміту з причини, поясненої нижче.
Хеш коміту обчислюється за допомогою SHA-1 алгоритму на основі такої інформації:
- Повідомлення коміту;
- Дата;
- Автор;
- Знімок робочого дерева;
- Хеш батьківського коміту (або комітів, якщо батьків декілька).
Якщо коміт є першим у репозиторії, то хеш батьківського коміту, очевидно, не обчислюється.
Оскільки вся ця інформація про коміт використовується для обчислення його хешу, використання хешів як ідентифікаторів комітів забезпечує цілісність репозиторію. Крім того, ймовірність того, що два різних коміти матимуть однаковий хеш (ймовірність колізії), є надзвичайно низькою, тому це малоймовірно.
Фактично, якщо щось зміниться у коміті, його хеш також зміниться. Це означає, що у разі пошкодження даних з будь-якої причини Git може використати хеш для ідентифікації цієї проблеми.
Під час редагування коміту його ідентифікатор змінюється, тому не рекомендується використовувати команду git commit --amend
при роботі з віддаленими репозиторіями.
Приклад робочого процесу
Перш ніж вирішити, який коміт скасувати, розглянемо чотири останні коміти:
Можна побачити, що є коміт, у якому було додано файл recipe.txt
. Скасуємо (revert) цей коміт, створивши новий коміт, який відмінить ці зміни та фактично видалить файл. У моєму випадку його хеш такий:
043b634d76a7a7744757350512b6367417c29e0
Однак ваш хеш для цього коміту буде іншим. Тепер можна скасувати цей коміт:
Замініть цей хеш на ваш хеш.
Знову відкривається текстовий редактор за замовчуванням із типовим повідомленням коміту для скасування. Залишаємо його без змін.
Далі коректно закриваємо текстовий редактор і переглядаємо зміни, внесені в цьому останньому коміті:
7 видалень було виконано, тобто всі 7 рядків файлу були видалені. Тепер перевіримо, чи сам файл був видалений, перелічивши всі неприховані файли та каталоги у нашій робочій директорії:
Файл recipe.txt
успішно видалено.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
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
Відкат Певного Коміту
Свайпніть щоб показати меню
git revert
Як вже було зазначено, для скасування певного коміту використовується команда git revert
. Ця команда створює новий коміт, який скасовує зміни, внесені зазначеним комітом. Базовий синтаксис виглядає так:
git revert <commit-hash>
Як видно, замість використання HEAD для скасування останнього коміту, тепер потрібно вказати хеш конкретного коміту (ID коміту), який необхідно скасувати (замініть <commit-hash>
на дійсний хеш).
Детальніше про хеші
Пам’ятайте, кожен коміт має унікальний ідентифікатор, який фактично є рядком із цифр (0-9) та літер (a-f), тобто шістнадцятковим рядком. Цей 40-символьний рядок називається хешем. Розглянемо наш останній коміт:
Ось його хеш:
1b00736255dca7d78659a9971d0c30fba0eb3075
У вас буде інший хеш для цього коміту з причини, поясненої нижче.
Хеш коміту обчислюється за допомогою SHA-1 алгоритму на основі такої інформації:
- Повідомлення коміту;
- Дата;
- Автор;
- Знімок робочого дерева;
- Хеш батьківського коміту (або комітів, якщо батьків декілька).
Якщо коміт є першим у репозиторії, то хеш батьківського коміту, очевидно, не обчислюється.
Оскільки вся ця інформація про коміт використовується для обчислення його хешу, використання хешів як ідентифікаторів комітів забезпечує цілісність репозиторію. Крім того, ймовірність того, що два різних коміти матимуть однаковий хеш (ймовірність колізії), є надзвичайно низькою, тому це малоймовірно.
Фактично, якщо щось зміниться у коміті, його хеш також зміниться. Це означає, що у разі пошкодження даних з будь-якої причини Git може використати хеш для ідентифікації цієї проблеми.
Під час редагування коміту його ідентифікатор змінюється, тому не рекомендується використовувати команду git commit --amend
при роботі з віддаленими репозиторіями.
Приклад робочого процесу
Перш ніж вирішити, який коміт скасувати, розглянемо чотири останні коміти:
Можна побачити, що є коміт, у якому було додано файл recipe.txt
. Скасуємо (revert) цей коміт, створивши новий коміт, який відмінить ці зміни та фактично видалить файл. У моєму випадку його хеш такий:
043b634d76a7a7744757350512b6367417c29e0
Однак ваш хеш для цього коміту буде іншим. Тепер можна скасувати цей коміт:
Замініть цей хеш на ваш хеш.
Знову відкривається текстовий редактор за замовчуванням із типовим повідомленням коміту для скасування. Залишаємо його без змін.
Далі коректно закриваємо текстовий редактор і переглядаємо зміни, внесені в цьому останньому коміті:
7 видалень було виконано, тобто всі 7 рядків файлу були видалені. Тепер перевіримо, чи сам файл був видалений, перелічивши всі неприховані файли та каталоги у нашій робочій директорії:
Файл recipe.txt
успішно видалено.
Дякуємо за ваш відгук!