Как вести два одинаковых проекта, имя возможность дорабатывать их вместе и по отдельности?
Два репозитория. В обоих добавляете еще один origin - на другой проект. 

Если нужно внести изменения в оба проекта, то сначала делаете это в одном, потом в другом проекте мерджите изменения с другого origin'а.

Писать код нужно максимально независимым. Используйте модульность, для модулей внешнее API и event/listeners для общения наружу. В местах где логика различается - по максимуму полиморфизм, и.е. избегайте мерджов всеми силами.

Второй вариант говно. Третий вариант слишком сложный.
Два репозитория. В обоих добавляете еще один origin - на другой проект. 

Если нужно внести изменения в оба проекта, то сначала делаете это в одном, потом в другом проекте мерджите изменения с другого origin'а.

Писать код нужно максимально независимым. Используйте модульность, для модулей внешнее API и event/listeners для общения наружу. В местах где логика различается - по максимуму полиморфизм, и.е. избегайте мерджов всеми силами.

Второй вариант говно. Третий вариант слишком сложный.