Сжатие всех моих коммитов (включая слияния) в один коммит без изменения истории
Скажем, в моей ветке 100 коммитов, над которыми я работаю 3 недели. Изредка (каждый день, действительно) я вытаскиваю из источника / мастера и сливаю его в свою ветку.
Как я мог (легко) объединить все свои коммиты в один коммит, не испортив историю? Если я каким-то образом раздавлю все свои коммиты в один, уничтожу ли я объединенные исходные / основные операции, когда мой запрос на перемещение будет перемещен в исходную / главную систему?
1 ответ
"Раздавливание" и "сохранение истории" являются примерно прямыми противоположностями в терминологии.
Если вы имеете в виду, что вы хотите сделать один коммит, включающий только ваши изменения, а не внесенные в основной выпуск, вы, вероятно, захотите rebase
на происхождение / мастер, а затем сквош оттуда. Вы можете сделать все это из одного вызова интерактивной перебазировки:
git fetch origin
git rebase -i origin/master
а затем измените все строки после первого из pick
в squash
,