For two long years, John had mourned the death of his best friend.
For two long years, Sherlock had kept that massive secret from him.
For two long years, he had been a fool.
Now, he had decided to forgive Sherlock. Punch him, just as he offered him to, and move on.
But it wasn't that easy, was it? For two years, he had slowly adapted to life without his best friend. Sure, Sherlock was a pain in the ass and an arrogant, terrible friend most of the time...
but he had grown incredibly fond of the arrogant, terrible man, and finding himself without Sherlock had been impossibly painful.
Now, he had to move on, pretend Sherlock didn't lie to him for so long, or at least let go of that grudge.
Mary told him he could do it, that he was generous enough to try. John wasn't so certain, and yet he couldn't imagine his life without Sherlock all over again.
And so he chose to forgive. Somehow, the grudge he had been holding onto ever since he discovered the truth began to leave his heart, bit by bit.
Sherlock was alive, and that was all that mattered.