Something is bothering your girlfriend, and she’s not being completely honest with you (or herself) about what it is. From what you describe, her behavior isn’t warranted by the fight after three years together. It sounds like things are bothering her more than she’s letting on — or else they’re bothering her more than you’re willing to admit.
It’s hard to make someone want to be with you — in fact, the saddest and most difficult part of relationships is when you want someone, but they don’t want you back. I’m afraid that while you really want this relationship to work out, she doesn’t. It’s hard to let go, especially after three years, but if you keep getting back together, and then she yells and threatens you after each reunion, her method of breaking up with you will be a long term chipping away at the relationship until you both realize there’s nothing there to save.
Love is a great feeling, but a feeling isn’t enough to keep a relationship on track. In fact, many people love each other but can’t be together, and maturity is when you can realize that although you love someone, they’re not a good match for you.
Consider that that’s what is happening here. You may be able to stay together for a little while longer, but I suspect another fight is around the corner, and these blow ups where she acts out in ways that the fight doesn’t seem to warrant are going to be what drives the two of you apart.
I think the relationship is over, but you may not be ready to see it’s end just yet.