My son is also very physical and around 2 he would occasionally hit or pull my hair. What worked for him was to teach him what it meant to be gentle. I would sit him in my lap and take his hand, open the palm, and show him how to stroke the side of my face or arm lightly and I'd say "gentle. gentle. we don't hit, we touch people gently like this!" and then I'd ask him if he could do it. And pretty soon he could!
This did two things: first it immediately redirected him to a new activity, namely learning a new word and skill. Second it gave him a concrete positive understanding of what it means to be gentle. Soon I could say "be gentle" to him and he would stroke whoever it was nicely, and of course be praised for it.
He's still a rough-and-tumble 3yr old, but to this day if you ask him about hitting he will tell you we don't hit people, we are gentle!
FWIW, my mom didn't think that this would be effective with such a physical kid and was shocked to see how ell it worked. In her day she would have probably swatted him. Now she tells the story of how he learned to be gentle to anyone who'll listen! ;-)