git fetch downloads branches. tags and all objects necessary to complete their histories. When the command completes, remote-tracking branches are updated accordingly. When no remote is specified, by default the origin remote will be used, unless there is an upstream branch configured for the current branch. The names of refs that are fetched, together with the object names they point at, are written to .git/FETCH_HEAD. git pull uses this information.
Before fetching, remove any remote-tracking references that no longer exist on the remote (tags may behave differently in respect to pruning).