Сжатие всех моих коммитов (включая слияния) в один коммит без изменения истории

Скажем, в моей ветке 100 коммитов, над которыми я работаю 3 недели. Изредка (каждый день, действительно) я вытаскиваю из источника / мастера и сливаю его в свою ветку.

Как я мог (легко) объединить все свои коммиты в один коммит, не испортив историю? Если я каким-то образом раздавлю все свои коммиты в один, уничтожу ли я объединенные исходные / основные операции, когда мой запрос на перемещение будет перемещен в исходную / главную систему?

1 ответ

Решение

"Раздавливание" и "сохранение истории" являются примерно прямыми противоположностями в терминологии.

Если вы имеете в виду, что вы хотите сделать один коммит, включающий только ваши изменения, а не внесенные в основной выпуск, вы, вероятно, захотите rebase на происхождение / мастер, а затем сквош оттуда. Вы можете сделать все это из одного вызова интерактивной перебазировки:

git fetch origin
git rebase -i origin/master

а затем измените все строки после первого из pick в squash,

Другие вопросы по тегам