Suggestions for division of labor between C++ and BP

Currently, we are working on a pure BP project. However, we have been having much trouble collaborating through Git, mainly because diff tracking and merging for blueprints is poorly supported in Git (even UE4’s merge and diff tools don’t support all blueprint objects).

Hence we’ve been exploring the possibility of converting most of our BP to C++. However, I am aware that many tools in UE4 are designed to work with BP and creating a 100% C++ project would be hard / hacky if not impossible.

So I would like some advice from people who has worked on larger projects involving lots of collaboration through Git, how they handle the imperfections between BP and Git.
And if converting to C++ is the way to go, how these larger projects handle the division of labor between C++ and BP.

I am currently looking into UnrealTournament for some ideas, but would be grateful for any input.

We prefer to break our C++ and Blueprint at the line of generic/specific for the most part.

We implement deeper generic functionality in C++ (a replicating door that throws states for opening and closing) and use blueprints to handle specific functionality (the meshes and specific defaults for a particular door, particle effects, specific sounds). This means you rarely need to dif anything since they are less complex and mostly cosmetic.

Also we make sure most functions are blueprint overridable to allow blueprints more leeway in prototyping then we can wrap it back to C++ later if we like it.

Lastly, Git just doesn’t handle large binaries well in general so be ready for a struggle in Unreal game development either way. Something like perforce is much more suited for it but i understand people have their own requirements or license issues.