Сжатие всех моих коммитов (включая слияния) в один коммит без изменения истории - PullRequest
1 голос
/ 06 марта 2012

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

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

1 Ответ

8 голосов
/ 06 марта 2012

«Сквошинг» и «сохранение истории» - это приблизительно прямые противоположности в терминологии.

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

git fetch origin
git rebase -i origin/master

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

...