I really love this series, especially with the very real repo for us to practice. Sometimes, even for people very experienced with dev, it's nice to have a "best practices" course so we are aware of how to respect others' projects and contribute in a way that is easiest for the very busy maintainers. Cheers!
I'm glad you like the series! You're right to be concerned about force pushing. It can be dangerous and it can mess up semantic-release. But this is only true when you force push to the
master branch. You can force push to any other branch just fine and because
semantic-release doesn't do anything with those branches, it doesn't make a difference.
As a related note, I recommend that you protect your master branch from force pushes: https://help.github.com/articles/about-protected-branches/