# git workflow for Project Lombok public branch 'master' tracks major releases and should always be in an effectively working condition. It is updated only occasionally, and virtually always just points at a particularly stable point on the more dynamic 'develop' branch. public branch 'develop' is still intended to run more or less stable, but is less tested and is what developers check completed features into. Each version release is accompanied by a tag. To develop a new feature, no matter how trivial: git checkout develop # start from branch 'develop' git checkout -b fixFoobar # Create a new branch for yourself ..... # write and commit stuff git checkout develop # go back to develop to update it git pull # update develop git checkout fixFoobar git rebase develop # Rewrite fixFoobar's history as if it was written according to latest 'develop' state. git checkout develop git merge fixFoobar # Update your version of 'develop' to include your fixes. git branch -d fixFoobar # delete your branch name git push # push changes up to github repo Major features might be turned into public branches, and will be merged and not rebased.