Странно что вам в master еще не прилетела какая-нибудь недоделанная фича... ;)
Давайте ответим на вопрос: Для чего вам нужен dev? На самом деле не для разработки, как вы думаете, а для тестирования фич. Правильно?
В связи с этим ваша проблема решается следующими шагами:
1. Переименовать dev в stage (test и т.п.) и забыть что там ведется разработка.
2. Все фича-ветки должны создаваться от master.
3. После завершения фичи она мержится в stage и проверяется. Можно даже без PR, т.к. теперь никакой хлам принципиально не может попасть в master.
4. Если все в порядке, из фича-ветки делаете PR в master.
5. stage можно иногда просто сносить и пересоздавать с головы master, чтобы история была красивее. ;)
PS: Это какая-то мания у команд - иметь ветку dev... "Мы же разработкой занимаемся - у нас должна быть ветка dev!". Так что ли?
Не всякому проекту нужна ветка dev! Точнее так - если у вас есть ветка dev, то у вас должна быть и ветка release и вы должны обновлять приложение большими релизами с определенной подготовкой к ним.