When does Gitlab remove commits?

From an auditing point of view I may have a need to check some specific commits from the past. What is problematic is that some of those commits may not have made it to the master branch. Because of that I have few questions:

When I push a commit to a branch and then delete that branch, how long will I be able to see that commit in Gitlab?

If I’ve created a merge request before deleting branch, would that create a lasting reference to that commit?

When I merge a branch into master using squash and delete branch, how long are the individual commits kept?