A more WL-like way of doing this, would be to write a function that makes the definitions and put a condition on that function. Something like:
MakeDefinitions[] /; cond := (
(* current contents of file.m *)
...
);
You put that inside your file and always Get it no matter what. Then at the point where you need the definitions, you run MakeDefinitions[] instead of doing Get["file.m"]. The body of the function will only run if the definitions are fulfilled. As a bonus, you can now also turn MakeDefinitions into a proper function with arguments.
Edit
It seems like there's a mechanism to bail out of Get that you can use. Try putting this in a .m file and Getting it:
Print[1];
If[ RandomChoice[{True, False}], Return[Null, Get]];
Print[2];
I didn't realise before that the (undocumented) 2-argument Return can bail you out to the nearest Get, but it seems to work. The first argument is the return value for the Get, which can be anything you like but Null is a good default.
Getthe file?If[ cond, Get["file.m"]]$\endgroup$Ifstatement to set a flag in your definitions file, then wrap each definition in anIfthat checks the flag? $\endgroup$