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 branch to merge in.
Check out a remote 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'
git checkout --track remote/branchName git checkout -b <branch> <remote>/<branch>
Setting the upstream branch
git checkout --track remote/branchName
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
- 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)