Скриптинг фиксируется в истории

Вопрос:

Скажем, у меня есть проект с таким количеством коммитов, что ручное переключение с самого начала невозможно. Пусть также говорят, что нет ветвей или тегов, только мастер. Пусть также говорят, что есть некоторые коммиты слияния, но, вероятно, слишком много, чтобы вручную объединить их или даже отслеживать.

Мой вопрос: как я могу скворовать все коммиты с самого первого коммита до совершения XYZ в единую фиксацию?

Графическое представление того, что я хочу преобразовать:

             /--R--T--Y---\
A--B--C--D--/--G--H--J--K--\---Q--X--Z---....

должен выглядеть так:

--<I don't care how you will do it git, just put everything from everywhere in a single commit here>----Q---X---Z.....

Это возможно?

Лучший ответ:

Оформить новую ветку с нужной начальной точкой.

git checkout D

git checkout -b myNewBranch

Использовать git merge --squash K

Затем вы можете совершить с новым сообщением все изменения из слияния.

После этого, в Git 1.7.2 и выше, вы можете вишневидно выбрать диапазон, чтобы перехватить другие коммиты.

git cherry-pick Q^..Z

Оцените статью
TechArks.Ru
Добавить комментарий