From KDE UserBase Wiki

    In general, features should be developed in a separate branch and merged into master once ready and reviewed, this allows the master branch to be in an almost permanently releasable state. Commits to master should be for simple things/bug fixes only.

    Create a new branch

    git checkout -b new_branch_name

    <do some work>

    Commit the work

    git commit -a (or whichever preferred way of checking in)

    <repeat until ready for review>

    Post the changes to reviewboard using whatever preferred method, although the following git alias is handy

    post-review = !post-review --guess-summary --guess-description --username=<reviewboardusernamehere> --repository-url=git:// --target-people=<regularlyusedpeoplehere> --target-group=calligra

    When ready to go into master, checkout master

    git checkout master

    Pull master and rebase

    git pull --rebase

    Merge the branch in a single, squashed commit

    git merge --squash new_branch_name

    Commit the new feature to master

    git commit -a (or whichever preferred commit method)

    Push to the main repository

    git push origin master