Once you check in a migration to source control, I would recommend not altering them. I make a rare exception if there is a bug in one, but this is quite rare (1 in 100 maybe).
The reason is that once they are out in the wild, some people may have run them. They are recorded as being completed in the db. If you change them and check in a new version, other people will not get the benefit of the change. You can ask people to roll back certain changes, and re-run them, but that defeats the purpose of the automation. Done often, it becomes a mess. It's better left alone.
When you do get a large number of migrations, it can start to feel awkward. In general, though, you won't be running those that much. The only place we do this is on our integration server, which drops and recreates the database each run. So you can just not open that directory and pretend they are not there.
There is a practice of consolidating migrations. To do this, simply copy the current schema into a migration, and delete all the earlier migrations. Then you have fewer files to manage, and the tests can run faster. You need to be careful doing this, especially if you have migrations running automatically on production. I generally replace a migration that I know everyone has run with the new schema one. Other people have slightly different ways to do this.