Start out on branch master, then work on an experimental branch $ git checkout -b experimental Do a series of commits etc. If you decide that the experimental features should now be part of master, do the following: $ git checkout master $ git merge --squash experimental $ git commit -a The commit message automatically has a list of all commits in experimental.