Чтобы разделить один коммит на несколько коммитов (например, используя командную строку git):
Необязательно: git branch backupBranchName
В случае, если вас беспокоит ошибка и теряя свою работу или желая иметь возможность легко отменить изменения, сначала создайте резервную копию своей ветви.
git reset HEAD^
Отмена текущего коммита, пока сохранение изменений с мягким сбросом. Ранее зафиксированные изменения теперь станут неустановленными изменениями.
git add --patch .
Выберите первое подмножество изменений, чтобы сформировать первый коммит, и подготовьте их. Если они уже разделены по файлам, вы можете легко выбрать, какие файлы ставить. Скорее всего, могут быть несвязанные изменения в тех же файлах, которые вы разберете sh. В этом случае вы можете интерактивно выбирать, какие блоки добавить, используя параметр -p
или --patch
. Возможно, вам придется «разделить» фрагменты, чтобы получить правильный набор изменений. Если независимые изменения не изменяют аналогичные разделы кода, этого должно быть достаточно. Если независимые изменения изменяют одну и ту же строку, вам может потребоваться временно отредактировать эти строки в редакторе исходного кода.
git stash --keep-index
Проверьте свои изменения. Возможно, вы захотите проверить набор изменений, который вы поставили, чтобы убедиться, что код по-прежнему собирается правильно, и все модульные тесты пройдены. Для этого вам нужно временно приостановить sh изменения, которые вы не добавляете в текущий коммит. Уже внесенные изменения должны остаться, чтобы их можно было построить и протестировать.
git commit
Создать новый коммит.
git stash pop
Unsta sh оставшиеся изменения и продолжить разбиение с шага 2.
Как вы уже выдвинули, история вашего нового работа будет отличаться, как только вы выполните вышеуказанные шаги. Это означает, что вы не можете просто отправить sh в ту же ветку, так как Git отклонит изменения. Вы можете вместо этого добавить pu sh в качестве новой ветки. В качестве альтернативы, и вам нужно долго и усердно подумать, прежде чем сделать это, вы можете заставить pu sh ветвь перезаписать историю в удаленном хранилище, но делать это только тогда, когда это не мешает другим людям, работающим в том же хранилище, кто, возможно, построил старую историю. Вынужденное толкание часто считается плохой практикой, поэтому тщательно продумайте, когда его использовать. Более стандартная практика заключается в пу sh новой ветке, открытии нового запроса на извлечение и закрытии любого старого запроса на извлечение.