From the very beginning we organized our repositories to match the code flow. We use two main branches (master and development) and a few other for features, fixes and bugs. We use the master branch as reflection of production code, and development for staging purposes. For every new feature and bug fix we create a new branch, connect it to a backlog item and monitor the progress at all times. We use naming which allows us to easily distinguish between branches and their purposes. We also tag important milestones to match their releases.
While we use different IDE and text editors we strongly standarized coding. Following internal rules of casing, formatting, code reusing, code structure, architecture, files organization allows us create uniform sources for every project. We use mainly two different aproches for development depending on needs - FDD (feature driven development) or TDD (test driven development). We also aim at strong design patterns. At the end of the day code is refactored & linted for streamline and optimized shape matching our strong standards and all needs of solution.