Don't know if that's standard practice, but I don't have any reason to think that it isn't.
A bit like flying a plane to your destination with a compass and stopwatch rather than simply looking out the window or at the GPS.
Migrations should be checked against the current production schema directly, not by retracing historical steps.
There are two states you care about: current production, and desired production.
There is one migration you care about: the one between production and desired.
Involving anything else is pointless complexity for no reason.
Well, one reason it might not be is that it's somewhat equivalent to checking out the initial version of the code, and applying all diffs to get to the current version every time you want to see the latest commit/HEAD.
On one hand, it's good to know, on the other hand, other than the last few steps needed to roll back a change, I would argue it's much more important to make sure that the current full schema represented in dev/testing (including static/dictionary tables) is as accurate as possible to the current live schema when the production branch is tested, and if you're already doing a schema dump and diff, you might as well be saving that as well.