After converting all of my lightweight tags to annotated ones, I noticed that the dates were all out of order. I decided that I wanted the tags to have the same dates as the respective commits, so I wrote a script to do that based on this StackOverflow answer:

#!/bin/bash
 
for tag in `git tag`; do
    date="$(git show $tag^0 -s --format=%aD)"
    GIT_COMMITTER_DATE="$date" git tag -a -f $tag $tag^0
done

The original answer didn’t work, because git show $tag --format=%aD still shows the annotated tag information before showing the commit information. I noticed that a comment on another answer suggested that adding ^0 to the tag reference would reference the commit instead of the tag, so I tried that to remove the annotated information and it worked!

However, git still opened my editor for each tag to edit the contents of the annotated tag, so I had to quit the editor for each tag. There doesn’t seem to be a --no-edit tag in the help, like there is for commit --amend, so I’m not sure if there’s a way around this.

After the tags had been updated, git push --tags --force pushed the updated tags to the remote.