We use git hooks to tie issues and commits together. I think Azure DevOps and some other PM software also does this without hooks.
Basically our team can't complete an issue without a commit, and a commit message won't be accepted without an issue tag.
(Issues can also be closed as "won't fix" without a commit of course.)