Я бы сделал что-то подобное:
$> git merge-base dev origin/master
<commit>
Все, что возвращается, будет точкой слияния, которая будет использоваться для сжатия ваших коммитов ...
Затем, если вы находитесь в своей ветке разработчика, просто выполните:
$> git reset <commit>
Это фактически поместит все изменения ваших 20 последовательных коммитов обратно в раздел "измененные файлы" в git status ...
Затем просто создайте новый коммит вот так (убедитесь, что git add - здесь все, что вам нужно):
$> git add --all
$> git commit -m "my squeezed stuff"
Тогда исправьте свои конфликты и подтолкните к происхождению ...
Надеюсь, это поможет,