--- topic: remote-config source_keys: - git-scm-remote-docs - context7-git-htmldocs --- # Remote configuration Which remotes exist, where they point, and what they track. `git remote show ` needs network access — use `-n` for cached data offline, or `git remote -v`, which lists URLs without querying. ## Add, remove, rename, inspect - **Add**: `git remote add `, or `-f` to fetch immediately - **Remove**: `git remote remove ` — deletes the remote, all its tracking refs, and its config - **Rename**: `git remote rename ` - **Inspect**: `git remote -v` (URLs, offline) or `git remote show ` (live tracking status) - **Effective URLs**: `git remote get-url ` shows the URL after `insteadOf` rewrites; `git remote get-url --push --all ` lists every push URL ## Tracking, mirroring, housekeeping - **Track one branch**: `git remote add -t ` (repeatable); `--no-tags` suppresses tag import entirely - **Mirror**: `--mirror=fetch` mirrors all refs locally (bare repos only); `--mirror=push` makes every push behave like `--mirror` - **Prune stale tracking refs without fetching**: `git remote prune `, with `--dry-run` to preview - **Default branch pointer**: `git remote set-head -a` (auto-detect, needs a prior fetch), `... ` (explicit), `... -d` (delete `refs/remotes//HEAD`) ## `set-url` — full form ```bash git remote set-url # replace the first fetch URL git remote set-url # replace only the URL matching regex git remote set-url --push # change push URL only (must point at same repo) git remote set-url --add # add an extra push URL (push to multiple remotes) git remote set-url --delete # remove URLs matching regex ``` `--push` changes only where pushes go — fetch and push URLs must still reference the same repository. For genuine fetch-from-A / push-to-B workflows, use two separate named remotes instead; `--push` cannot do this.