In Git your working copy is a clone of the entire repository. This includes branches and tags. This decreases the overhead (speed and manual work) involved when switching contexts and the need to be connected to a network. Some examples are:
- When switching branches there is no need to connect to a remote server or close your IDE/project and open a checkout in another directory. Running
git checkout [branch name]
is all you need to do. - When merging you do not need a connection to the remote server, you have all branches locally. Since branches are so cheap in Git you could create a new branch to perform the merge in so that if you had a large amount of conflicts you could incrementally work on and commit without affecting the main branch then merge or create a patch after everything has been fixed.
- Because Git is a distributed system in addition to connecting to a central repository developers can connect to another developers repository. This allows team