Используйте gitk (* nix), или gitx (OS X) или аналогичные на других платформах, и посмотрите, какой коммит был корнем вашей ветви. Затем запустите:
git rebase -i <the SHA hash of the root commit>
Например, у меня есть репозиторий, который я проверял с помощью gitx:
Теперь, когда я знаю корневой хэш, я могу запустить это:
git rebase -i 38965ed29d89a4136e47b688ca10b522b6bc335f
И мой редактор всплывает с этим, и я могу изменить / squash / что угодно, как мне захочется.
pick 50b2cff File 1 changes.
pick 345df08 File 2 changes.
pick 9894931 File 3 changes.
pick 9a62b92 File 4 changes.
pick 640b1f8 File 5 changes.
pick 1c437f7 File 6 changes.
pick b014597 File 7 changes.
pick b1f52bc File 8 changes.
pick 40ae0fc File 9 changes.
# Rebase 38965ed..40ae0fc onto 38965ed
#
# Commands:
# pick = use commit
# edit = use commit, but stop for amending
# squash = use commit, but meld into previous commit
#
# If you remove a line here THAT COMMIT WILL BE LOST.
# However, if you remove everything, the rebase will be aborted.
#
Я уверен, что есть какой-то волшебный способ убедить git автоматически определить корень дерева, но я не знаю, что это такое.
РЕДАКТИРОВАТЬ: Это магия это:
git log master..other_feature | cat
Который покажет вам все коммиты в этой ветке, а пайп к кошке отключит пейджер, поэтому вы сразу увидите первый коммит.
РЕДАКТИРОВАТЬ: сочетание вышеупомянутого дает полностью автоматизированное решение:
git rebase -i `git log master..other_feature --pretty=format:"%h" | tail -n 1`~