Merge branch 'mh/reporting-broken-refs-from-for-each-ref' into maint
[git] / Documentation / git-remote.txt
1 git-remote(1)
2 ============
3
4 NAME
5 ----
6 git-remote - Manage set of tracked repositories
7
8
9 SYNOPSIS
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
25 DESCRIPTION
26 -----------
27
28 Manage the set of repositories ("remotes") whose branches you track.
29
30
31 OPTIONS
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
40 COMMANDS
41 --------
42
43 With no arguments, shows a list of existing remotes.  Several
44 subcommands are available to perform operations on the remotes.
45
46 'add'::
47
48 Adds a remote named <name> for the repository at
49 <url>.  The command `git fetch <name>` can then be used to create and
50 update remote-tracking branches <name>/<branch>.
51 +
52 With `-f` option, `git fetch <name>` is run immediately after
53 the remote information is set up.
54 +
55 With `--tags` option, `git fetch <name>` imports every tag from the
56 remote repository.
57 +
58 With `--no-tags` option, `git fetch <name>` does not import tags from
59 the remote repository.
60 +
61 By default, only tags on fetched branches are imported
62 (see linkgit:git-fetch[1]).
63 +
64 With `-t <branch>` option, instead of the default glob
65 refspec for the remote to track all branches under
66 the `refs/remotes/<name>/` namespace, a refspec to track only `<branch>`
67 is created.  You can give more than one `-t <branch>` to track
68 multiple branches without grabbing all branches.
69 +
70 With `-m <master>` option, a symbolic-ref `refs/remotes/<name>/HEAD` is set
71 up to point at remote's `<master>` branch. See also the set-head command.
72 +
73 When a fetch mirror is created with `--mirror=fetch`, the refs will not
74 be stored in the 'refs/remotes/' namespace, but rather everything in
75 'refs/' on the remote will be directly mirrored into 'refs/' in the
76 local repository. This option only makes sense in bare repositories,
77 because a fetch would overwrite any local commits.
78 +
79 When a push mirror is created with `--mirror=push`, then `git push`
80 will always behave as if `--mirror` was passed.
81
82 'rename'::
83
84 Rename the remote named <old> to <new>. All remote-tracking branches and
85 configuration settings for the remote are updated.
86 +
87 In 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
89 the configuration file format.
90
91 'remove'::
92 'rm'::
93
94 Remove the remote named <name>. All remote-tracking branches and
95 configuration settings for the remote are removed.
96
97 'set-head'::
98
99 Sets or deletes the default branch (i.e. the target of the
100 symbolic-ref `refs/remotes/<name>/HEAD`) for
101 the named remote. Having a default branch for a remote is not required,
102 but allows the name of the remote to be specified in lieu of a specific
103 branch. For example, if the default branch for `origin` is set to
104 `master`, then `origin` may be specified wherever you would normally
105 specify `origin/master`.
106 +
107 With `-d` or `--delete`, the symbolic ref `refs/remotes/<name>/HEAD` is deleted.
108 +
109 With `-a` or `--auto`, the remote is queried to determine its `HEAD`, then the
110 symbolic-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
112 the symbolic-ref `refs/remotes/origin/HEAD` to `refs/remotes/origin/next`. This will
113 only work if `refs/remotes/origin/next` already exists; if not it must be
114 fetched first.
115 +
116 Use `<branch>` to set the symbolic-ref `refs/remotes/<name>/HEAD` explicitly. e.g., "git
117 remote 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
124 Changes the list of branches tracked by the named remote.
125 This can be used to track a subset of the available remote branches
126 after the initial setup for a remote.
127 +
128 The named branches will be interpreted as if specified with the
129 `-t` option on the 'git remote add' command line.
130 +
131 With `--add`, instead of replacing the list of currently tracked
132 branches, adds to that list.
133
134 'set-url'::
135
136 Changes URLs for the remote. Sets first URL for remote <name> that matches
137 regex <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 +
140 With '--push', push URLs are manipulated instead of fetch URLs.
141 +
142 With '--add', instead of changing existing URLs, new URL is added.
143 +
144 With '--delete', instead of changing existing URLs, all URLs matching
145 regex <url> are deleted for remote <name>.  Trying to delete all
146 non-push URLs is an error.
147 +
148 Note that the push URL and the fetch URL, even though they can
149 be set differently, must still refer to the same place.  What you
150 pushed to the push URL should be what you would see if you
151 immediately fetched from the fetch URL.  If you are trying to
152 fetch from one place (e.g. your upstream) and push to another (e.g.
153 your publishing repository), use two separate remotes.
154
155
156 'show'::
157
158 Gives some information about the remote <name>.
159 +
160 With `-n` option, the remote heads are not queried first with
161 `git ls-remote <name>`; cached information is used instead.
162
163 'prune'::
164
165 Deletes all stale remote-tracking branches under <name>.
166 These stale branches have already been removed from the remote repository
167 referenced by <name>, but are still locally available in
168 "remotes/<name>".
169 +
170 With `--dry-run` option, report what branches will be pruned, but do not
171 actually prune them.
172
173 'update'::
174
175 Fetch updates for a named set of remotes in the repository as defined by
176 remotes.<group>.  If a named group is not specified on the command line,
177 the configuration parameter remotes.default will be used; if
178 remotes.default is not defined, all remotes which do not have the
179 configuration parameter remote.<name>.skipDefaultUpdate set to true will
180 be updated.  (See linkgit:git-config[1]).
181 +
182 With `--prune` option, prune all the remotes that are updated.
183
184
185 DISCUSSION
186 ----------
187
188 The remote configuration is achieved using the `remote.origin.url` and
189 `remote.origin.fetch` configuration variables.  (See
190 linkgit:git-config[1]).
191
192 Examples
193 --------
194
195 * Add a new remote, fetch, and check out a branch from it
196 +
197 ------------
198 $ git remote
199 origin
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
205 origin
206 staging
207 $ git fetch staging
208 ...
209 From 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
234 SEE ALSO
235 --------
236 linkgit:git-fetch[1]
237 linkgit:git-branch[1]
238 linkgit:git-config[1]
239
240 GIT
241 ---
242 Part of the linkgit:git[1] suite