Punishment does not work - so please do not hit your horse as this does not solve anything, rather it makes your horse fear you and he will therefore become more pushy and disrespectful as a result.
I completely agree with Lowri here! The only way to gain your horses respect is through consistent groundwork, such as lunging, changes of direction, yielding his hindquarters, backing, etc. In other words, moving his feet gains his respect. If your horse respects you, he should move when you ask. In a herd, the higher horse moves others through pressure and release.
Begin through lunging/roundpenning. Ask your horse to move up a gear in whichever way suits, either through a voice cue or body signal. If they do not move straight away, or take 3 seconds to eventually move, put pressure on them through swinging the lunge whip. As soon as they move, stop swinging the lunge whip.
If they still fail to move, spank the ground with the whip as to increase the pressure. As soon as they move, release the pressure. If they fail to move now, however, target their hind end with the whip (as a higher horse would nip a lower horse on their hind end to tell them to move immediately).
Remember, the horse determines whether you're gentle with them. If your horse moves with a little bit of pressure, then great! However, if your horse is more dominant and pushy, he may need to feel that whip to get him going, but only use it in this way if necessary.
Hope this helps! :)
In terms of them being pushy and in your face 15 minutes ground work each day works quite well! Basically getting them to respect you and back up when you ask, stay unmoving until you ask otherwise, and rewarding them and asking them to come forward to you when they do this well. Moving their quarters away is good for getting them to focus on you and listen also.