]> git.ipfire.org Git - thirdparty/git.git/blame - Documentation/git-remote.txt
remote: add meaningful exit code on missing/existing
[thirdparty/git.git] / Documentation / git-remote.txt
CommitLineData
041e69c9 1git-remote(1)
142d035a 2=============
041e69c9
BF
3
4NAME
5----
a2f69581 6git-remote - Manage set of tracked repositories
041e69c9
BF
7
8
9SYNOPSIS
10--------
11[verse]
b1889c36 12'git remote' [-v | --verbose]
89eed6fa 13'git remote add' [-t <branch>] [-m <master>] [-f] [--[no-]tags] [--mirror=(fetch|push)] <name> <url>
bf98421a 14'git remote rename' <old> <new>
e17dba8f 15'git remote remove' <name>
159543e8 16'git remote set-head' <name> (-a | --auto | -d | --delete | <branch>)
ca5bc9e6 17'git remote set-branches' [--add] <name> <branch>...
96f78d39 18'git remote get-url' [--push] [--all] <name>
433f2be1
IL
19'git remote set-url' [--push] <name> <newurl> [<oldurl>]
20'git remote set-url --add' [--push] <name> <newurl>
21'git remote set-url --delete' [--push] <name> <url>
b17dd3f9
TR
22'git remote' [-v | --verbose] 'show' [-n] <name>...
23'git remote prune' [-n | --dry-run] <name>...
0adda936 24'git remote' [-v | --verbose] 'update' [-p | --prune] [(<group> | <remote>)...]
041e69c9
BF
25
26DESCRIPTION
27-----------
28
29Manage the set of repositories ("remotes") whose branches you track.
30
041e69c9 31
459cf2e9
SB
32OPTIONS
33-------
34
35-v::
36--verbose::
37 Be a little more verbose and show remote url after name.
89eed6fa 38 NOTE: This must be placed between `remote` and subcommand.
459cf2e9
SB
39
40
0f390875
SP
41COMMANDS
42--------
43
44With no arguments, shows a list of existing remotes. Several
45subcommands are available to perform operations on the remotes.
46
47'add'::
48
89eed6fa 49Add a remote named <name> for the repository at
041e69c9
BF
50<url>. The command `git fetch <name>` can then be used to create and
51update remote-tracking branches <name>/<branch>.
c5ddca1f
JH
52+
53With `-f` option, `git fetch <name>` is run immediately after
54the remote information is set up.
55+
111fb858
ST
56With `--tags` option, `git fetch <name>` imports every tag from the
57remote repository.
58+
59With `--no-tags` option, `git fetch <name>` does not import tags from
60the remote repository.
61+
aaba0ab4
MG
62By default, only tags on fetched branches are imported
63(see linkgit:git-fetch[1]).
64+
c5ddca1f
JH
65With `-t <branch>` option, instead of the default glob
66refspec for the remote to track all branches under
0aceb220 67the `refs/remotes/<name>/` namespace, a refspec to track only `<branch>`
c5ddca1f 68is created. You can give more than one `-t <branch>` to track
cf593cc4 69multiple branches without grabbing all branches.
c5ddca1f 70+
0aceb220 71With `-m <master>` option, a symbolic-ref `refs/remotes/<name>/HEAD` is set
bc14fac8 72up to point at remote's `<master>` branch. See also the set-head command.
38944390 73+
6cf378f0 74When a fetch mirror is created with `--mirror=fetch`, the refs will not
a9f5a355
JK
75be stored in the 'refs/remotes/' namespace, but rather everything in
76'refs/' on the remote will be directly mirrored into 'refs/' in the
77local repository. This option only makes sense in bare repositories,
78because a fetch would overwrite any local commits.
79+
6cf378f0
JK
80When a push mirror is created with `--mirror=push`, then `git push`
81will always behave as if `--mirror` was passed.
041e69c9 82
bf98421a
MV
83'rename'::
84
0e615b25 85Rename the remote named <old> to <new>. All remote-tracking branches and
bf98421a 86configuration settings for the remote are updated.
74443f18
MV
87+
88In case <old> and <new> are the same, and <old> is a file under
89`$GIT_DIR/remotes` or `$GIT_DIR/branches`, the remote is converted to
90the configuration file format.
bf98421a 91
e17dba8f 92'remove'::
1b4cbb5d
JB
93'rm'::
94
0e615b25 95Remove the remote named <name>. All remote-tracking branches and
1b4cbb5d
JB
96configuration settings for the remote are removed.
97
bc14fac8
JS
98'set-head'::
99
0aceb220
JH
100Sets or deletes the default branch (i.e. the target of the
101symbolic-ref `refs/remotes/<name>/HEAD`) for
bc14fac8
JS
102the named remote. Having a default branch for a remote is not required,
103but allows the name of the remote to be specified in lieu of a specific
104branch. For example, if the default branch for `origin` is set to
105`master`, then `origin` may be specified wherever you would normally
106specify `origin/master`.
107+
159543e8 108With `-d` or `--delete`, the symbolic ref `refs/remotes/<name>/HEAD` is deleted.
bc14fac8 109+
159543e8 110With `-a` or `--auto`, the remote is queried to determine its `HEAD`, then the
0aceb220 111symbolic-ref `refs/remotes/<name>/HEAD` is set to the same branch. e.g., if the remote
89eed6fa 112`HEAD` is pointed at `next`, `git remote set-head origin -a` will set
0aceb220 113the symbolic-ref `refs/remotes/origin/HEAD` to `refs/remotes/origin/next`. This will
bc14fac8
JS
114only work if `refs/remotes/origin/next` already exists; if not it must be
115fetched first.
116+
89eed6fa
JNA
117Use `<branch>` to set the symbolic-ref `refs/remotes/<name>/HEAD` explicitly. e.g., `git
118remote set-head origin master` will set the symbolic-ref `refs/remotes/origin/HEAD` to
bc14fac8
JS
119`refs/remotes/origin/master`. This will only work if
120`refs/remotes/origin/master` already exists; if not it must be fetched first.
121+
122
3d8b6949
JN
123'set-branches'::
124
125Changes the list of branches tracked by the named remote.
126This can be used to track a subset of the available remote branches
127after the initial setup for a remote.
128+
129The named branches will be interpreted as if specified with the
89eed6fa 130`-t` option on the `git remote add` command line.
3d8b6949
JN
131+
132With `--add`, instead of replacing the list of currently tracked
133branches, adds to that list.
134
96f78d39
BB
135'get-url'::
136
137Retrieves the URLs for a remote. Configurations for `insteadOf` and
138`pushInsteadOf` are expanded here. By default, only the first URL is listed.
139+
bcf9626a 140With `--push`, push URLs are queried rather than fetch URLs.
96f78d39 141+
bcf9626a 142With `--all`, all URLs for the remote will be listed.
96f78d39 143
433f2be1
IL
144'set-url'::
145
697f6528 146Changes URLs for the remote. Sets first URL for remote <name> that matches
433f2be1 147regex <oldurl> (first URL if no <oldurl> is given) to <newurl>. If
697f6528 148<oldurl> doesn't match any URL, an error occurs and nothing is changed.
433f2be1 149+
bcf9626a 150With `--push`, push URLs are manipulated instead of fetch URLs.
433f2be1 151+
bcf9626a 152With `--add`, instead of changing existing URLs, new URL is added.
433f2be1 153+
bcf9626a 154With `--delete`, instead of changing existing URLs, all URLs matching
697f6528
JH
155regex <url> are deleted for remote <name>. Trying to delete all
156non-push URLs is an error.
157+
158Note that the push URL and the fetch URL, even though they can
159be set differently, must still refer to the same place. What you
160pushed to the push URL should be what you would see if you
161immediately fetched from the fetch URL. If you are trying to
162fetch from one place (e.g. your upstream) and push to another (e.g.
163your publishing repository), use two separate remotes.
164
433f2be1 165
0f390875 166'show'::
041e69c9 167
0f390875 168Gives some information about the remote <name>.
181ea688
SV
169+
170With `-n` option, the remote heads are not queried first with
171`git ls-remote <name>`; cached information is used instead.
0f390875
SP
172
173'prune'::
174
d0e07472
ÆAB
175Deletes stale references associated with <name>. By default, stale
176remote-tracking branches under <name> are deleted, but depending on
177global configuration and the configuration of the remote we might even
178prune local tags that haven't been pushed there. Equivalent to `git
179fetch --prune <name>`, except that no new references will be fetched.
180+
181See the PRUNING section of linkgit:git-fetch[1] for what it'll prune
182depending on various configuration.
181ea688 183+
89eed6fa 184With `--dry-run` option, report what branches would be pruned, but do not
8d767927 185actually prune them.
1e592d65
TT
186
187'update'::
188
86f0b372 189Fetch updates for remotes or remote groups in the repository as defined by
89eed6fa 190`remotes.<group>`. If neither group nor remote is specified on the command line,
75f492ac 191the configuration parameter remotes.default will be used; if
cb5c49b9 192remotes.default is not defined, all remotes which do not have the
89eed6fa 193configuration parameter `remote.<name>.skipDefaultUpdate` set to true will
5162e697 194be updated. (See linkgit:git-config[1]).
efa54803 195+
d0e07472 196With `--prune` option, run pruning against all the remotes that are updated.
859607df 197
0f390875
SP
198
199DISCUSSION
200----------
201
041e69c9
BF
202The remote configuration is achieved using the `remote.origin.url` and
203`remote.origin.fetch` configuration variables. (See
5162e697 204linkgit:git-config[1]).
041e69c9 205
9144ba4c
ÆAB
206EXIT STATUS
207-----------
208
209On success, the exit status is `0`.
210
211When subcommands such as 'add', 'rename', and 'remove' can't find the
212remote in question, the exit status is `2`. When the remote already
213exists, the exit status is `3`.
214
215On any other error, the exit status may be any other non-zero value.
216
76a8788c 217EXAMPLES
041e69c9
BF
218--------
219
db554bf0
JH
220* Add a new remote, fetch, and check out a branch from it
221+
041e69c9
BF
222------------
223$ git remote
224origin
225$ git branch -r
34a25d4c
TK
226 origin/HEAD -> origin/master
227 origin/master
228$ git remote add staging git://git.kernel.org/.../gregkh/staging.git
041e69c9 229$ git remote
041e69c9 230origin
34a25d4c
TK
231staging
232$ git fetch staging
233...
234From git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging
235 * [new branch] master -> staging/master
236 * [new branch] staging-linus -> staging/staging-linus
237 * [new branch] staging-next -> staging/staging-next
041e69c9 238$ git branch -r
34a25d4c
TK
239 origin/HEAD -> origin/master
240 origin/master
241 staging/master
242 staging/staging-linus
243 staging/staging-next
328c6cb8 244$ git switch -c staging staging/master
041e69c9
BF
245...
246------------
247
0b444cdb 248* Imitate 'git clone' but track only selected branches
db554bf0
JH
249+
250------------
251$ mkdir project.git
252$ cd project.git
253$ git init
254$ git remote add -f -t master -m master origin git://example.com/git.git/
255$ git merge origin
256------------
257
258
56ae8df5 259SEE ALSO
041e69c9 260--------
5162e697
DM
261linkgit:git-fetch[1]
262linkgit:git-branch[1]
263linkgit:git-config[1]
041e69c9 264
041e69c9
BF
265GIT
266---
9e1f0a85 267Part of the linkgit:git[1] suite