Question: How can I lock an existing git tag?

The purpose is to make a release tag unmovable, and to prevent somebody else from deleting a release tag in remote repository. I have tried `git tag -a tag_name`, but the tag is still deleted.

Answer: 
If you have a shared central repo, you can set up a `pre-receive` hook on this central repo to reject any push that would modify an already existing tag.

If you use some active git server (e.g : `gitolite`) you can enforce this kind of rule in the access rights each user has.
You can sign the tag.

See the documentation for signing tags:
[Git Tools - Signing Your Work](https://git-scm.com/book/tr/v2/Git-Tools-Signing-Your-Work)