Страницы

Поиск по вопросам

пятница, 14 февраля 2020 г.

Как разделить коммит на несколько?

#git #контроль_версий #git_rebase


Закоммитил всё, с помощью git commit -a -m Save, но потом забыл про это и сделал
несколько коммитов поверх него.  

Существует ли возможность разделить коммит в истории git на несколько более специфичных?  
    


Ответы

Ответ 1



В документации Git есть замечательная инструкция, как раз на этот случай: Разделение коммитов В интерактивном режиме, Вы можете пометить коммит действием "edit"(редактировать). Однако, это не означает, что git rebase ожидает результат редактирования в виде ровно одного коммита. На самом деле, Вы можете отменить этот коммит, и/или добавить другие наборы изменений. Это можно использовать, чтобы разделить коммит на несколько: git rebase -i <коммит>^ - Начните интерактивное изменение истории с помощью git rebase -i <коммит>^, где <коммит> - это то, что Вы хотите разделить. На самом деле, тут может быть любой диапазон изменений, если он включает нужный коммит edit - Пометьте тот коммит, который необходимо разделить действием "edit". git reset HEAD^ - Когда дело дойдёт до редактирования этого коммита, выполните git reset HEAD^. Это удалит зафиксированный набор изменений, оставив все изменения в рабочем каталоге. git add; git commit - Теперь фиксируйте изменения таким образом, которым Вы хотели. В процессе, Вы можете делать что угодно, редактировать файлы, убирать изменения в stash, и т.п. git rebase --continue - Когда все изменения зафиксированы в желаемом количестве коммитов(git status пуст), выполните git rebase --continue, чтобы применить все вышележащие изменения поверх новых. Любое изменение в истории контроля версий git, порождает новую историю, несовместимую со старой (все хеши будут обновлены). Поэтому, Вы должны ясно понимать, что Вы делаете. Лучше воздержаться от изменения истории, которая покинула локальный репозиторий и может (даже потенциально) быть у другого разработчика.

Комментариев нет:

Отправить комментарий