After going through the code and thinking about this. I think the unexpected results came from git branch not checking out the branch I created. I know git checkout -b master would have been the result I wanted. If I were to create another commit with HEAD checked out instead of master, master would not update, only HEAD would. > I guess the real crime here is that git branch does not checkout the branch created. I don't think I ever wanted to create a branch without checking it out, otherwise I would use git tag. The problem with this is that git tag doesn't create a new branch, but rather just a new tag so running something like: git tag my-tag git checkout my-tag git add . git commit -m "message" wouldn't update my-tag either, you would need to create a new branch for that. Sometimes I want to create a branch without checking it out, as I'm sure many other users do. Is it an issue of documentation where maybe the behavior isn't clear? It does specifically say this in the description of git branch, but to be fair it is buried 6 paragraphs in