How can I skip a migration with Django migrate command?

You can use the --fake option.

Once you revert to 0001 you can run

python manage.py migrate <app> 0002 --fake

and then run

python manage.py migrate <app> #Optionally specify 0003 explicitly

which would apply only 0003 in this case.

If you do not want to follow this process for all the environment/other developers, you can just remove the migration files, and run a new makemigration, and commit that file - and yes, do run migrate with the --fake option

docs: https://docs.djangoproject.com/en/3.1/ref/django-admin/#cmdoption-migrate-fake


Not applicable to this specific case, but if one wants or needs to skip all unapplied migrations, this can be used:

python manage.py migrate --fake

Just saves a bit of typing.