

I’ve always wondered if this didn’t mean that the changes in the local branch wasn’t going to be pushed to the master branch in the remote repository. This is one of the parts that have confused me the most. In the following Push dialog we simply hit OK. To do this we use the Push right click menu option just like we would have if we were working in the master branch. To me this is slightly confusing as pushing it doesn’t mean pushing that actual branch to the remote repository but rather creating a new branch in the remote repository and pushing the changes. When we want to share our local branch with others, or store it in a remote repository to back it up or be able to retrieve it from another computer we need to push. Pushing the local branch to a new remote branch (on GitHub) This is reflected in the Commit menu item in TortoiseGit’s right click menu. We can now make some changes and commit them to the local branch. Our working directory is now the newly created branch (“branch1” in my case). In the following dialog we choose our newly created local branch and hit OK. To switch to the newly created branch we right click and pick the Switch/Checkout menu item. Unless we didn’t check the “Switch to new branch” checkbox in the Create Branch dialog our working directory is still the master branch. We then get the Create Branch dialog where we enter a name for the branch and hit OK. Given that we’ve created a local repository and added a remote to it, in my case a GitHub repository, we can create a local branch by right clicking in a directory in the repository and pick the Create Branch menu item. I therefor decided to do some research and experimentation and document a workflow that seems to work. The documentation for handling branches using the console is great, but when I’ve been using TortoiseGit I’ve often felt confused and insecure when dealing with remote branches. This means that a branch is unique to each repository and the workflow when wanting to push a local branch to a remote repository, or the opposite, is a bit different. Git makes it really easy and fast to work with branches compared to many version control systems that aren’t distributed, but coming from the world of TFS or SubVersion where a branch is basically a physical directory that one can check in and check out in Git it’s pretty much just a pointer.

As a user of TortoiseGit I’ve always been a bit confused when it comes to dealing with remote branches.
