A few training sessions with a GSD-experienced, balanced trainer could help you immensely! I hate to say it, but when he defies you like that, he is "telling you off", and you're allowing that!
Don't issue a command you can't enforce, or when compliance is highly unlikely...and don't ever give a command and not follow through to enforce it!
By that I don't at all mean be overbearing, or authoritative. I mean be cautious yourself when you choose to, or not to, give any command. Lots of times when distractions are high and there's a lot going on, it's a bad time to give a puppy, or dog, any command! Judge the situation, control yourself, and don't give your puppy a command when it's unlikely he'll listen!
When you do give a command, don't ever let him not do what he's been told! Again, not confrontational, not a fight, just a clear, calm, demand...and don't let him not listen....
It's not the size of the dog in the fight, it's the size of the fight in the dog. Mark Twain