A repository can have any number of remotes. Common patterns:
origin — your fork (where you push)
upstream — the canonical repo (where you fetch latest)
staging — a staging/preview environment
personal — your private mirror
Each can be inspected:
git remote -v
git remote show origin
Push to a specific remote: git push staging main. Set push default per branch: git branch --set-upstream-to=origin/main main.
A common gotcha: git pull defaults to origin. Pull from upstream explicitly:
git fetch upstream
git rebase upstream/main