About
Remote-tracking branches are local references to the state of remote branches
- You can't modify them. They’re just local references that you can’t move.
- They represent the state of the remote repository the last time you connected to them
They are a local cache of the remote branches.
Syntax
Remote-tracking branches take the form <remote>/<branch>
Example
origin/master and remote/master are two remote-tracking branch.
where:
- origin is the first remote that comes from a clone
- local is the local repo
- remote is another remote branch added with the following statement
git remote add remote https://aRemoteUrl
- the remote where fetched with the following statement
git fetch origin
git fetch remote
Management
List
git branch --remotes
# or
git branch -r
* master
Update
Update the remote tracking branch with the modification on the remote branch
git fetch
git pull is used behind the scene
Delete
One
git branch -rd <remote>/<branchname>
Prune
To delete all remote-tracking branches that are stale ie where the corresponding branches on the remote machine no longer exist:
git remote prune <remote>
With git-gui, Remote > Prune
Paths
Each remote-tracking branch has a file under .git/refs/<remote>/