There seem to me to be two questions here. Firstly, the issue of relicensing, and secondly, the issue of version control systems.
The first question is hard to answer, because it presumes that licences inhere in code. They do not; instead, their rights and obligations attach to recipients of the code through the act of conveyance. Once you think that way, the problem goes away.
Assuming you have the right to relicense the code, then you can change, right now, the licence declarations in both newthe current (and also, if you wish, in the old) versions. Anyone who gets a version from you will get it on the terms stated in that version at the time that they get it.
Persons who already have copies of old versions have them under the terms that they were advised of at the time they took them. You cannot revoke those terms retrospectively. If those terms, as free licences do, permit the licensees to further redistribute the code, then if they choose to do that it will be done on the terms of their choice, subject to the constraints imposed by the licence at the time of the original conveyance.
The second question is specific to your VCS, and we can't advise on that here.