My understanding is that all existing plans for deflection are wild-and-crazy and completely untested.
We'd be okay if we had 30 years of warning, because that's long enough to try multiple insane strategies, each of which takes half a decade to get working.
They're not all insane. Personally, I'm partial to the slow but effective gravity tow: send a small, 1-ton spacecraft and have it sit right next to the asteroid, without impact. If you place it correctly you can alter the orbit however you like.
Of course, the danger is that this could be used for evil, too. But it's not that crazy, and it would most definitely work.
We routinely land impactors, robots, and even sample return missions on other bodies in the Solar System. It does not seem to be a stretch to land a small rocket on a meteor and give it a push. If you do it a few years in advance, it would not even take much of a rocket.
When the mass you are trying to move is a billion metric tons, you're gonna need a lot of advance warning. We can land on asteroids, changing their trajectory enough to avoid a planet strike is uncharted and entirely unpracticed territory.
Part of me thinks that NASA's recent foray into asteroids is just that, practice.
We make sure there is enough money in the defence budget to send out Bruce Willis, Ben Affleck and gang on more training missions. Although I'm not opposed to just leaving Ben Affleck out there for a while.
We also need to come up with some treatment for space dementia. It almost ruined the mission last time.
Meteor defense relies on early detection, but we are unable to spot these until after they already hit (and by then it's too late).