Other than referencing in comments using #issue, is there any other way to link issues to commits?
See the help documentation for all the different ways you can link to issues and PRs from various locations.
In the same way, Can we link an issue from private repo to a commit in public repo>
Yes, you can. But the link won’t work for anyone that doesn’t have access to the private repo.