You can read this blog article to see why this is a successful way of branching. In this flow, we have the main branch and a development branch.
That squashes your PR into one commit on the development branch. If there are conflicts, you need to rebase against development again. To do that, you run the following command in your feature branch.
git pull --rebase origin development
git push --force-with-lease