Как удалить коммит в Git: полное руководство
Для удаления коммита в Git можно использовать команду "git reset" или "git revert". Однако, прежде чем удалять коммит, необходимо понять его влияние на историю проекта и последующие коммиты.
1. "git reset" – удаление коммита и всех последующих коммитов:
Для удаления коммита и всех последующих коммитов в ветке, следует использовать команду "git reset" с указанием хэша коммита, до которого должна быть отмена изменений (по умолчанию используется "HEAD").
git
git reset <хэш коммита>
После выполнения данной команды, все коммиты после указанного хэша будут удалены из истории проекта, а изменения в рабочей директории и индексе будут восстановлены к состоянию на момент указанного коммита.
2. "git revert" – отмена изменений коммита:
Если нужно удалить только изменения в коммите, а сам коммит оставить в истории проекта, можно использовать команду "git revert".
git
git revert <хэш коммита>
После выполнения данной команды, создастся новый коммит, который отменяет изменения, внесенные в указанный коммит. Таким образом, коммит останется в истории проекта, но его эффект будет отменен.
Пример:
Допустим, у нас есть следующая история коммитов:
git
commit e56a3128a19a6899d02569263a6d2b6c8e6bc656
Author: John Doe
Date: Tue Jun 20 14:02:49 2017 +0300
Feature #42: add user authentication
commit 3069438752bc6cfe7d29ea3bb91a7f9a30c5e641
Author: Jane Smith
Date: Mon Jun 19 17:20:02 2017 +0300
Feature #41: add search functionality
commit 03bb6877d1b723c4268c9e9f0cceda06d812bf2f
Author: John Doe
Date: Sun Jun 18 22:45:56 2017 +0300
Feature #40: add user registration
Если мы хотим удалить коммит "Feature #42: add user authentication", то можем использовать команду:
git
git reset e56a3128a19a6899d02569263a6d2b6c8e6bc656
Эта команда свернет историю коммитов до коммита "Feature #41: add search functionality". Применительно к нашей истории коммитов, это значит, что в результате будет удален коммит "Feature #42: add user authentication" и все коммиты, которые находятся после него.
Если же нужно отменить только изменения в коммите "Feature #42: add user authentication", то можем использовать команду:
git
git revert e56a3128a19a6899d02569263a6d2b6c8e6bc656
После выполнения этой команды создастся новый коммит, который отменит изменения, внесенные в коммит "Feature #42: add user authentication". На примере нашей истории коммитов, это значит, что создастся новый коммит:
commit 9e3ae3c8f1b371f986b63a516cb7fa0b3d3addaa
Author: John Doe
Date: Wed Jun 21 11:55:07 2017 +0300
Revert "Feature #42: add user authentication"
This reverts commit e56a3128a19a6899d02569263a6d2b6c8e6bc656.
Данный коммит отменяет изменения, внесенные в коммит "Feature #42: add user authentication". При этом, сам коммит остается в истории проекта.