I'd use CMake as my project file generator, thus it would be easy to generate a new project file for whatever IDE/build system I wanted to use.
Usually there are two ways towards developing on multiple platforms:
- You're actually developing the game on different OS and switch whenever you want.
- You develop on one OS with one development environment and whenever you've finished your sprint or similar, you switch to the other OS and integrate it there.
The first method is somewhat harder as you've already experienced and one can lose quite a bit of time keeping everything constantly up-to-date on both OS.
The second method is afaik more common and it's also what I've used in the past, but (!) it only works if you write portable code, otherwise you'll spend days getting things working again on the other system. Getting things to compile on both systems, once you've got a larger dependency list is already quite time consuming.
In any case, I'd say you most definitely should setup a repository. Personally I prefer Git as it very powerful and lets you choose from different work-flows, instead of forcing one onto you.
On the one bigger project I'm involved with, we got the main developer, who's developing everything on Debian and has setup various Git repositories for all the internal libraries. Whenever I want to work on the project I can simply go, checkout the repositories and either work on the code directly (e.g. with Vim) or let me generate a IDE file (e.g. Code::Blocks) and off I go. Once I've made my changes, I commit them to a separated branch and push them back to the repository, where then main dev then gets to review my changes and merge them back into the project. Of course when you're the only dev you could potentially commit to the working branch directly.
I hope my wall of text made any sense...