The best thing we did for Rogue because she was the same at one point was to teach her to ignore everything and anything when she was on lead.
When she misbehaved we simply checked her (needed to be quite rough at the beginning but she soon got the message) a firm 'LEAVE' command and just carry on walking.
You need to be firm otherwise she will think she can get away with it.
Lots of praise too once you get past it but don't stop walking and make her work to be off lead. A simple sit, and wait means she gets excited about being let off lead and reacts fine to other dogs and stuff.
We use a halti, but not when we were checking her on walkies. I used a full choke and it worked a treat for a short, sharp check.
__________________
mum to Rogue, GSD, daft as a brush!
Cait, the human puppy, 6 years,
and two pretty miffed cats, Smokey and the Bandit =^.^=
