Typical workflow How does a typical workflow look like? I am going to take one of my repo's as an example on how one would go about doing all the things I described in this book. I look at the feature I want to implement In my code I begin writing what I want to do in plain English I begin with the easiest aspect of it At each stage of the features development I am commit (Example below) When I am finished with my feature I rebase my with dev I do this to fix potential issues (merge conflict) If everything works as expected I will start a pull request I personally do a merge commit so I can keep the commit history When all features are tested together and everything works one can begin a pull request into main For this I would recommend squash Then I would recommend to make a tag for the current state of development As well as a release if wanted