GIT is a fast version control system that handles branching very efficiently and allow for most operations to be done offline (is a distributed VCS). Of course sometimes you have to exchange code with external GIT repos (maybe central storage). Being distributed forces some design decisions: local/remote branches distrinction were introduced.
Remote branch in GIT is a head that tracks branch stored on server. You shouldn't update (commit) directly that branch. You can update local branches instead then use "push" to publish changes from local branch to remote. Remote branch can be used to answer the following questions:
- is my local branch up to date regarding to server state?
- what changes (diff/log) were added to my local branch and aren't submitted (push) yet?
In order to use properly remote branches you have to create maching local branch for every remote branch. Boring and error-prone task. Let's automate it:!
git branch -a | awk \ '/RELEASE/ { sub("remotes/origin/", "", $1); \ print "git branch --track " $1 " origin/" $1 }' | sh
Above command imports all branches that contain string "RELEASE" (I assume we may be interested in checking release status).