Предполагая, что вы не заботитесь о сохранении каких-либо существующих сообщений коммита, есть отличный (и быстрый) рецепт git, который вы можете использовать.Во-первых, убедитесь, что ваша ветвь извлечена:
git checkout <branch-to-squash>
В целях безопасности давайте пометим текущую фиксацию.
git tag my-branch-backup
Затем переместите ветку HEAD обратно к вашей последней хорошей фиксации (без изменения рабочей области или индекса). РЕДАКТИРОВАТЬ: последний хороший коммит - это самый последний коммит в вашей ветке, который вы хотите сохранить.
git reset --soft <last-good-commit>
Используя git status
, вы заметите, что все изменения в вашей функцииФилиал сейчас поставлены.Все, что осталось сделать, это ...
git commit
Этот метод отлично подходит для объединения длинных, запутанных историй мерзавцев и грубых слияний.Кроме того, нет конфликтов для слияния / перебазирования, которые нужно разрешить!
Теперь, если вам нужно сохранить какое-либо из ваших существующих сообщений о коммитах или сделать что-то более необычное, чем позволяет вышеописанное, вы захотите использовать git rebase --interactive
.
Решение, полученное из: http://makandracards.com/makandra/527-squash-several-git-commits-into-a-single-commit
Ссылка: http://git -scm.com / docs / git-reset
Ссылка: http://git -scm.com / документы / ГИТ-перебазироваться