Put simply, stopping pulling requires 2 things. First, to reward the dog for doing what you want, and second, to stop rewarding the dog for pulling.
Hold treats in your hand next to your leg at the dog's nose level and think of your hand like a Pez dispenser. Keep your hand down as you walk, delivering a treat every few steps and letting your dog lick and nibble between treats. If your dog is very mouthy (or short, for that matter), use peanut butter or something sticky on a long spoon and the dog can lick that. Practice starting, stopping, and turning. Keep your dog on the same side as the treats. Meaning hold the leash with the other hand, so leash is diagonal across your body. If you're reaching across yourself to deliver treats, the dog will start walking sideways under your feet. After you've practiced a lot and the dog is staying with you, pull your hand up for a moment, go a couple steps, then immediately put it back down and give a treat. Repeat, practicing starting, stopping, and turning. Over the coming weeks (if not months) you can leave your hand up for longer periods.
Make sure you release your dog to go sniff. Walks are about adventure and exploring, not just physical exercise. Every so often, release your dog to "go sniff" and stand still or follow your dog as long as the leash is loose so it can sniff, potty, explore, and be a dog.
So what happens if your dog pulls? First you need to understand why dogs pull. They pull because it gets them *exactly* what they want. It is extremely self-rewarding. They get to go forward, get to sniff what they want, get to look at and watch what they want, and so on. To remove the reward of pulling you must stop immediately as soon as there is tension on the leash, or preemptively stop when your dog suddenly picks up its pace. Make sure when you stop that the dog cannot reach what it wants, and is not staring at something- otherwise it is being extra rewarded for pulling. If it can, apply gentle even pressure (no popping, jerking, yanking) and call the dog back toward you. The *instant* the dog turns back toward you, reward. Use a treat to lure the dog back into position beside you and go again, or even better you can reward the dog by releasing it to go sniff or go to what it wanted as long as the leash remains loose to get there and of course as long as it's safe to do so. This is called the Premack principle, which states that a lower probability behavior (staying by your side) can be reinforced by rewarding with a higher probability behavior (going toward what it wants).
In working with shelter dogs, many are too stressed or excited to take treats so I use mainly the stop-and-go method. Most dogs catch on in about 10-15 minutes that if they pull, we stop instantly. They are by no means perfect at that point but they don't pull as hard, as soon as there is tension they self-correct, and walks are much more enjoyable.
With my rescue husky she was an INSANE puller at first. She would stand up on her hind legs when I stopped and would balance. With her, I started by walking backwards while giving treats, then I could rotate besides her still giving treats, then back in front, and swivel back and forth. I used a head collar with her for added control at first, and because we do mushing where she is supposed to pull I continue using the head collar for walks because I find the difference in equipment helps her understand when it is pulling time vs walking time. She walks fantastic on leash, but pulls very hard when we mush.