Documentation / git-remote.txton commit Add tests for wildcard "path vs ref" disambiguation (ae454f6)
   1git-remote(1)
   2============
   3
   4NAME
   5----
   6git-remote - Manage set of tracked repositories
   7
   8
   9SYNOPSIS
  10--------
  11[verse]
  12'git remote' [-v | --verbose]
  13'git remote add' [-t <branch>] [-m <master>] [-f] [--[no-]tags] [--mirror=<fetch|push>] <name> <url>
  14'git remote rename' <old> <new>
  15'git remote remove' <name>
  16'git remote set-head' <name> (-a | --auto | -d | --delete | <branch>)
  17'git remote set-branches' [--add] <name> <branch>...
  18'git remote set-url' [--push] <name> <newurl> [<oldurl>]
  19'git remote set-url --add' [--push] <name> <newurl>
  20'git remote set-url --delete' [--push] <name> <url>
  21'git remote' [-v | --verbose] 'show' [-n] <name>...
  22'git remote prune' [-n | --dry-run] <name>...
  23'git remote' [-v | --verbose] 'update' [-p | --prune] [(<group> | <remote>)...]
  24
  25DESCRIPTION
  26-----------
  27
  28Manage the set of repositories ("remotes") whose branches you track.
  29
  30
  31OPTIONS
  32-------
  33
  34-v::
  35--verbose::
  36        Be a little more verbose and show remote url after name.
  37        NOTE: This must be placed between `remote` and `subcommand`.
  38
  39
  40COMMANDS
  41--------
  42
  43With no arguments, shows a list of existing remotes.  Several
  44subcommands are available to perform operations on the remotes.
  45
  46'add'::
  47
  48Adds a remote named <name> for the repository at
  49<url>.  The command `git fetch <name>` can then be used to create and
  50update remote-tracking branches <name>/<branch>.
  51+
  52With `-f` option, `git fetch <name>` is run immediately after
  53the remote information is set up.
  54+
  55With `--tags` option, `git fetch <name>` imports every tag from the
  56remote repository.
  57+
  58With `--no-tags` option, `git fetch <name>` does not import tags from
  59the remote repository.
  60+
  61By default, only tags on fetched branches are imported
  62(see linkgit:git-fetch[1]).
  63+
  64With `-t <branch>` option, instead of the default glob
  65refspec for the remote to track all branches under
  66the `refs/remotes/<name>/` namespace, a refspec to track only `<branch>`
  67is created.  You can give more than one `-t <branch>` to track
  68multiple branches without grabbing all branches.
  69+
  70With `-m <master>` option, a symbolic-ref `refs/remotes/<name>/HEAD` is set
  71up to point at remote's `<master>` branch. See also the set-head command.
  72+
  73When a fetch mirror is created with `--mirror=fetch`, the refs will not
  74be stored in the 'refs/remotes/' namespace, but rather everything in
  75'refs/' on the remote will be directly mirrored into 'refs/' in the
  76local repository. This option only makes sense in bare repositories,
  77because a fetch would overwrite any local commits.
  78+
  79When a push mirror is created with `--mirror=push`, then `git push`
  80will always behave as if `--mirror` was passed.
  81
  82'rename'::
  83
  84Rename the remote named <old> to <new>. All remote-tracking branches and
  85configuration settings for the remote are updated.
  86+
  87In case <old> and <new> are the same, and <old> is a file under
  88`$GIT_DIR/remotes` or `$GIT_DIR/branches`, the remote is converted to
  89the configuration file format.
  90
  91'remove'::
  92'rm'::
  93
  94Remove the remote named <name>. All remote-tracking branches and
  95configuration settings for the remote are removed.
  96
  97'set-head'::
  98
  99Sets or deletes the default branch (i.e. the target of the
 100symbolic-ref `refs/remotes/<name>/HEAD`) for
 101the named remote. Having a default branch for a remote is not required,
 102but allows the name of the remote to be specified in lieu of a specific
 103branch. For example, if the default branch for `origin` is set to
 104`master`, then `origin` may be specified wherever you would normally
 105specify `origin/master`.
 106+
 107With `-d` or `--delete`, the symbolic ref `refs/remotes/<name>/HEAD` is deleted.
 108+
 109With `-a` or `--auto`, the remote is queried to determine its `HEAD`, then the
 110symbolic-ref `refs/remotes/<name>/HEAD` is set to the same branch. e.g., if the remote
 111`HEAD` is pointed at `next`, "`git remote set-head origin -a`" will set
 112the symbolic-ref `refs/remotes/origin/HEAD` to `refs/remotes/origin/next`. This will
 113only work if `refs/remotes/origin/next` already exists; if not it must be
 114fetched first.
 115+
 116Use `<branch>` to set the symbolic-ref `refs/remotes/<name>/HEAD` explicitly. e.g., "git
 117remote set-head origin master" will set the symbolic-ref `refs/remotes/origin/HEAD` to
 118`refs/remotes/origin/master`. This will only work if
 119`refs/remotes/origin/master` already exists; if not it must be fetched first.
 120+
 121
 122'set-branches'::
 123
 124Changes the list of branches tracked by the named remote.
 125This can be used to track a subset of the available remote branches
 126after the initial setup for a remote.
 127+
 128The named branches will be interpreted as if specified with the
 129`-t` option on the 'git remote add' command line.
 130+
 131With `--add`, instead of replacing the list of currently tracked
 132branches, adds to that list.
 133
 134'set-url'::
 135
 136Changes URLs for the remote. Sets first URL for remote <name> that matches
 137regex <oldurl> (first URL if no <oldurl> is given) to <newurl>. If
 138<oldurl> doesn't match any URL, an error occurs and nothing is changed.
 139+
 140With '--push', push URLs are manipulated instead of fetch URLs.
 141+
 142With '--add', instead of changing existing URLs, new URL is added.
 143+
 144With '--delete', instead of changing existing URLs, all URLs matching
 145regex <url> are deleted for remote <name>.  Trying to delete all
 146non-push URLs is an error.
 147+
 148Note that the push URL and the fetch URL, even though they can
 149be set differently, must still refer to the same place.  What you
 150pushed to the push URL should be what you would see if you
 151immediately fetched from the fetch URL.  If you are trying to
 152fetch from one place (e.g. your upstream) and push to another (e.g.
 153your publishing repository), use two separate remotes.
 154
 155
 156'show'::
 157
 158Gives some information about the remote <name>.
 159+
 160With `-n` option, the remote heads are not queried first with
 161`git ls-remote <name>`; cached information is used instead.
 162
 163'prune'::
 164
 165Deletes all stale remote-tracking branches under <name>.
 166These stale branches have already been removed from the remote repository
 167referenced by <name>, but are still locally available in
 168"remotes/<name>".
 169+
 170With `--dry-run` option, report what branches will be pruned, but do not
 171actually prune them.
 172
 173'update'::
 174
 175Fetch updates for a named set of remotes in the repository as defined by
 176remotes.<group>.  If a named group is not specified on the command line,
 177the configuration parameter remotes.default will be used; if
 178remotes.default is not defined, all remotes which do not have the
 179configuration parameter remote.<name>.skipDefaultUpdate set to true will
 180be updated.  (See linkgit:git-config[1]).
 181+
 182With `--prune` option, prune all the remotes that are updated.
 183
 184
 185DISCUSSION
 186----------
 187
 188The remote configuration is achieved using the `remote.origin.url` and
 189`remote.origin.fetch` configuration variables.  (See
 190linkgit:git-config[1]).
 191
 192Examples
 193--------
 194
 195* Add a new remote, fetch, and check out a branch from it
 196+
 197------------
 198$ git remote
 199origin
 200$ git branch -r
 201  origin/HEAD -> origin/master
 202  origin/master
 203$ git remote add staging git://git.kernel.org/.../gregkh/staging.git
 204$ git remote
 205origin
 206staging
 207$ git fetch staging
 208...
 209From git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging
 210 * [new branch]      master     -> staging/master
 211 * [new branch]      staging-linus -> staging/staging-linus
 212 * [new branch]      staging-next -> staging/staging-next
 213$ git branch -r
 214  origin/HEAD -> origin/master
 215  origin/master
 216  staging/master
 217  staging/staging-linus
 218  staging/staging-next
 219$ git checkout -b staging staging/master
 220...
 221------------
 222
 223* Imitate 'git clone' but track only selected branches
 224+
 225------------
 226$ mkdir project.git
 227$ cd project.git
 228$ git init
 229$ git remote add -f -t master -m master origin git://example.com/git.git/
 230$ git merge origin
 231------------
 232
 233
 234SEE ALSO
 235--------
 236linkgit:git-fetch[1]
 237linkgit:git-branch[1]
 238linkgit:git-config[1]
 239
 240GIT
 241---
 242Part of the linkgit:git[1] suite