Contributor deleted pushed code

During the week I had a nasty experience.

A contributor deleted checked in code. He now denies it.

  1. How can I prevent contributors to delete code?
    (I have tried to block it but then they cannot even push the code. I only want the repo to be protected against deleting pushed code)

  2. How can I find out who did delete the code in that event during the week? Is there any log I can get somewhere?