Как разделить разработку backend и frontend?
Теоретически конечно могут возникать ситуации, когда и бек, и фронт, лезут редактировать одно и то же место, в одном и том же файле, плюс-минус в одно и то же время. Что может приводить к merge conflicts. 
Но, во-первых, такое должно происходить крайне редко. Во-вторых, если это происходит, то это вопрос не совсем корректных процессов или архитектуры. В третьих, такие конфликты легко резолвятся тимлидом.
Поэтому, лично я не вижу никакой проблемы в том, что работа идет в feature branches, каждый делает свою часть, а потом это все мерджится.
Сразу скажу, что не имею огромного опыта, но скажу как делаем мы.
У нас совсем маленькая команда. В основном пишем веб-приложения(CRM и тд) на Laravel+Vue/AngularJS. Делаем один репозиторий на BitBucket, раздаем права и как бы все. Backend-еры не лезут в код фронта и наоборот. Следовательно никаких конфликтов не возникает в гите. Ну а если возникает, то там гит сам подсказывает, что да как делать. В основном это просто git add * git commit -m "message". И все конфликты уходят.
Никаких неудобств не испытываем с битбакетом. Опять же можно привязать ключи и не вводить постоянно пароль. И все шутро работает.