Коммит — не точка невозврата. GitHub Desktop позволяет спокойно пересобрать локальный коммит через Undo или отменить уже опубликованный коммит через Revert.
Сначала один вопрос: commit уже отправлен?
- Нет, Push ещё не сделан → используй Undo.
- Да, commit уже на GitHub → используй Revert.
Это главное правило всего материала.
Undo: пересобираем локальный commit
Undo убирает последний локальный commit из History, но не удаляет изменения файлов. Они возвращаются во вкладку Changes, где их можно проверить, дополнить и закоммитить заново.
Способ 1: через Changes
- Открой вкладку Changes.
- Найди блок последнего локального commit внизу панели.
- Нажми Undo.
- Убедись, что файлы снова появились в Changes.
Способ 2: через History
В некоторых версиях GitHub Desktop Undo доступен из контекстного меню последнего неопубликованного commit во вкладке History.
- Открой History.
- Нажми правой кнопкой на последний локальный commit.
- Выбери Undo commit, если пункт доступен.
- Вернись в Changes и проверь файлы.
Что сделать после Undo
- Прочитай diff ещё раз.
- Добавь забытые изменения или исправь сообщение.
- Заполни Summary.
- Создай commit заново.
- Только после проверки нажми Push origin.
Undo и Discard changes — разные операции. Undo сохраняет правки, Discard changes удаляет незакоммиченные изменения.
Revert: отменяем опубликованный commit
Если commit уже отправлен на GitHub, удалять или переписывать общую историю опасно. Revert создаёт новый commit с обратными изменениями.
- Открой History.
- Нажми правой кнопкой на нужный опубликованный commit.
- Выбери Revert Changes in Commit.
- Открой созданный Revert commit и прочитай обратный diff.
- Нажми Push origin.
Исходный commit останется в History. Рядом появится новый commit, который отменяет его результат. Это нормальная и прозрачная история.
Undo и Revert: короткое сравнение
| Ситуация | Инструмент | Что произойдёт |
|---|---|---|
| Последний commit только на компьютере | Undo | Commit исчезнет, изменения вернутся в Changes |
| Commit уже опубликован | Revert | Появится новый обратный commit |
| Нужно удалить незакоммиченные правки | Discard changes | Правки будут удалены — используй осторожно |
Важно: Revert не удаляет секреты
Если в commit попали пароль, токен, приватный ключ или API-ключ, Revert не делает их безопасными. Исходный commit остаётся в History, поэтому значение всё ещё можно увидеть.
Правильный порядок:
- Считай секрет раскрытым.
- Немедленно отзови или замени его у провайдера.
- Удали секрет из текущей версии проекта.
- Обратись к ответственному разработчику или ментору для очистки Git-истории.
- Не публикуй настоящий секрет повторно для проверки.
Чек-лист перед действием
- Я проверил, был ли Push.
- Для локального commit выбрал Undo.
- Для опубликованного commit выбрал Revert.
- Прочитал diff до и после операции.
- Не использую Revert как защиту опубликованного секрета.
Ошибки в Git исправимы. Главное — сначала определить, опубликован commit или ещё нет.
💬 Комментарии (0)
Комментариев пока нет
Станьте первым, кто поделится мнением об этой статье!