for 6 out of the 7 months of our relationship he has been cheating, and even after he stopped cheating he has been putting himself above everything (e.g. i have 6 weeks in a country and he went travelling for 3 of those weeks) 

Normally when I break up I am angry at him, and then after I calm down I end up regretting my decision, and then I get angry and frustrated again and unblock him to yell at him, and then his lack of care angers me more and then after I calm down I want him again. its a mess. I want to be in a calm state of mind when I make my decision and I want to prove to myself that its not because of my mental health issues. So how do I get to a stage where I can leave him and not go crawling back?