When encountering the message 'pushes to this branch are not permitted; you must use a pull request to update this branch,' what are the underlying reasons and best practices for using pull requests in version control systems?