Once you clone a Git repository, you are highly unlikely to work on the master unless you are a Maverick! The immediate thing you will look out for is branching - whether it is to add new features or even fix your bugs before pushing them live (Do you do ‘Test Driven Development’, by the way? :-D ). And Git is a great tool in this realm because branches are really really cheap - both in terms of memory and time (when switching between branches)
You start off with knowing the current branch you are working on with
$ git branch
You can get a list of all the branches using:
$ git branch -a --> all local and remote branches $ git branch -r --> remote branches only
Creating a local branch is a simple
$ git branch myLocalBranch
Beware that the above only creates a branch, it does not check it out and set it up ready for use. To do both at once, you can use:
$ git checkout -b myLocalBranch
While working in branches is good, it is also a good practice to keep your branch as close as possible to master (if you want to avoid day long conflict resolutions) by regularly updating from master by one of the 2 following ways:
merging master into your branch. This will create a separate commit that master was merged or a custom message that you may choose in case of conflicts.
$ git merge master
rebasing against master, generally a cleaner (preferred by many) way to get the changes into your branch. This does not create a separate commit in case of conflicts.
$ git rebase master $ git rebase --continue (once you resolve any conflicts)
Note that these are just local branches on your machine. All changes/commits reside on your machine, not on the remote server. We’ll look at remote branches soon.