Различные подходы описаны в " Общие сведения о рабочем процессе Git ":
недолгая работа
В большинстве случаев моя уборка - это просто слияние сквоша.
git checkout master
git merge --squash private_feature_branch
git commit -v
Большая работа
Я решил, что мои изменения должны быть разбиты на более мелкие изменения, так что сквош слишком тупой инструмент. (Как правило, я спрашиваю: «Было бы легко проверить код?»)
git rebase - интерактивный мастер
(не вариант в вашем случае, как вы упоминаете в своем вопросе)
Объявление о банкротстве филиала
Возможно, моя функциональная ветвь существовала очень долго, и мне пришлось объединить несколько веток в свою функциональную ветку, чтобы поддерживать ее в актуальном состоянии во время работы. История запутанная.
Проще всего взять сырой дифференциал и создать чистую ветку.
git checkout master
git checkout -b cleaned_up_branch
git merge --squash private_feature_branch
git reset
Теперь у меня есть рабочий каталог, полный моих изменений, и ни одного багажа из предыдущего отделения. Теперь я вручную добавляю и фиксирую свои изменения.