Get Eclipse, TextUML and Acceleo installed in appropriate versions.
Use TextUML to describe your domain through UML in a textual form and to build a Ecore-based model from it. You can version the TextUML description in git.
Learn the Object Constraint Language (OCL) to actually express constraints on that model. You can use your knowledge for model constraints and to express model transformations of various sorts.
Use QVLTo as Model-to-Model Transformation (MMT) to transform that model incrementally, enriching or reducing it on the way, or even translating it to another meta model.
Use Acceleo as Model-to-Text Transformation (M2T) to build actual source code for your purposes.