About
Tracking branches are local branches that have set their upstream branch.
Technically, when a local branch got an upstream, a tracking branch is created as a local reference to a remote branch and is not a local branch.
The local branches have then a direct relationship with their upstream branch that can be:
- or another local branch
When you pull, Git automatically knows:
- which upstream branch to fetch from
- which branch to merge in.
Management
Create
Check out a remote branch
Checking out a local branch from a remote-tracking branch automatically creates a tracking branch (and the branch it tracks is called an upstream branch).
If the branch name you’re trying to checkout doesn’t exist and exactly matches a name on only one remote, Git will create a tracking branch for you
git checkout remote/branchName
Branch branchNameset up to track remote branch branchName from remote.
Switched to a new branch 'branchName'
Other syntax:
git checkout --track remote/branchName
git checkout -b <branch> <remote>/<branch>
Setting the upstream branch
git checkout --track remote/branchName
List
git fetch --all
git branch -vv
iss53 7e424c3 [origin/iss53: ahead 2] forgot the brackets
master 1ae2a45 [origin/master] deploying index fix
* serverfix f8674d9 [teamone/server-fix-good: ahead 3, behind 1] this should do it
testing 5ea463a trying something new
where:
- branch iss53 is tracking origin/iss53 and is
- ahead by two commit (two commits were not pushed to the server)
- the branch server-fix-good branch on the teamone server is:
- ahead by three (three commits locally that we haven’t pushed)
- behind by one (one commit on the server has not been merged)