Раздел вопрос-ответ git отменить определённый коммит

Как в git отменить определённый коммит?

share

1 ответ

Для отмены определённого коммита в git нужно знать sha1 — уникальный идентификатор коммита. Это 40-символьная строка — хэш коммита. Например, c8a861ebb73d5164c76d74ba4a55be517d67944d или 54e7fd1065761ef1d58d83b1a7f60b3ba63eff40.

Можно указывать первые n символов, а не sha1 целиком.

Отменить определённый коммит в git нужно командой:

git revert sha1

1. Сначала находим нужный нам коммит, который нужно отменить. Нас интересует sha1-хэш коммита. Используем для этого любую удобную утилиту для работы с git или через интерфейс github, bitbucket и т.д.

Для поиска хэша коммита я использую стантартную команду git log.

Если помните примерное имя коммита, то можно грепнуть из git log, например:

$ git log | grep -B4  '2 verdict buttons'
commit c8a861ebb73d5164c76d74ba4a55be517d67944d
Author: Eugene Yurkevich <yurkevich@vicman.net>
Date:   Tue Dec 8 11:22:08 2015 +0300

    3 verdict buttons: allow/deny

2. Теперь отменяем коммит командой git revert с указанием sha1 коммита:

git revert c8a861ebb73d5164c76d74ba4a55be517d67944d

При возникновении конфликтов придётся их пофиксить, как и при git merge. После чего нужно будет как обычно сделать git add, git commit.

Если конфликтов нет, то автоматически будет создан новый коммит, отменяющий указанный коммит.

Коммит отменён. Как можно было заметить, отмена коммита - это создание нового коммита (реверт-коммит), который отменяет определённый коммит.

Есть возможность "чистой" отмены последнего коммита в git, если ещё не сделан git push. В этом случае никаких реверт-коммитов не останется в git-истории.

Добавить комментарий
    как минимум 5 символов

    icon Вход в систему

    зарегистрироваться
    НОВЫЕ ПОЛЬЗОВАТЕЛИ