How do you keep Xcode project source files in sync with your file system directories?

I’m new to XCode and I find the file management a huge pain. In most IDEs, you can simply have the project source tree reference a directory structure on disk. This makes it easy to add new files to your project – you simply put them on disk, and they will get compiled automatically.

With XCode, it appears I have to both create the file and separately add it to the project (or be forced to manipulate the filesystem through the UI). But this means that sharing the .xcodeproj through source control is fraught with problems – often, we’ll get merge conflicts on the xcodeproj file – and when we don’t, we often get linker errors, because during the merge some of the files that were listed in the project get excised. So I have to go and re-add them to the project file until I can get it to compile, and then re-check in the project file.

I’m sure I must be missing something here. I tried using ‘reference folders’ but the code in them doesn’t seem to get compiled. It seems insane to build an IDE that forces everyone to modify a single shared file whenever adding or removing files to a project.

How do you keep Xcode project source files in sync with your file system directories?