Pushing and Deleting Tags

git push sends branches, not tags. Push a tag by name (git push origin v1.0.0), or let --follow-tags send every annotated tag that points into the history you push. The listing then publishes a stray lightweight tag and deletes it everywhere:

Publishing tags, then deleting one on the server and in another cloneShell
git push --follow-tags
git tag v1.0 && git push -q origin v1.0
cd ../laptop && git fetch -q && git tag
cd ../booknest && git tag -d v1.0 && git push -q origin --delete v1.0
cd ../laptop && git fetch --prune --prune-tags
cd ../booknest
Output
To ../server/booknest.git
   a2508da..8211cbb  main -> main
 * [new tag]         v0.9.0 -> v0.9.0
 * [new tag]         v1.0.0 -> v1.0.0
v0.9.0
v1.0
v1.0.0
Deleted tag 'v1.0' (was 8211cbb)
From /home/dev/v5-ch2/booknest/../server/booknest
 - [deleted]         (none)     -> v1.0

push.followTags true makes every push do this; avoid git push --tags, which publishes stray lightweight tags too. A fetch brings the tags that point into the history it downloads, but never removes one unless you ask with --prune-tags (Git 2.17 1,932 ). Never move a published tag: Git does not update an existing tag behind a user's back, so clones keep the old commit under the same name. Tag the fix as a new version instead.