]> git.ipfire.org Git - thirdparty/git.git/blame - Documentation/git-remote.txt
Git 2.16.4
[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]
0460ed2c 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.
4504107d 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
49Adds 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
bc14fac8 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+
0aceb220
JH
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
130`-t` option on the 'git remote add' command line.
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
8b3f3f84 175Deletes all stale remote-tracking branches under <name>.
859607df 176These stale branches have already been removed from the remote repository
1e592d65
TT
177referenced by <name>, but are still locally available in
178"remotes/<name>".
181ea688 179+
75f492ac 180With `--dry-run` option, report what branches will be pruned, but do not
8d767927 181actually prune them.
1e592d65
TT
182
183'update'::
184
1918278e
TT
185Fetch updates for a named set of remotes in the repository as defined by
186remotes.<group>. If a named group is not specified on the command line,
75f492ac 187the configuration parameter remotes.default will be used; if
cb5c49b9 188remotes.default is not defined, all remotes which do not have the
1918278e 189configuration parameter remote.<name>.skipDefaultUpdate set to true will
5162e697 190be updated. (See linkgit:git-config[1]).
efa54803
FAG
191+
192With `--prune` option, prune all the remotes that are updated.
859607df 193
0f390875
SP
194
195DISCUSSION
196----------
197
041e69c9
BF
198The remote configuration is achieved using the `remote.origin.url` and
199`remote.origin.fetch` configuration variables. (See
5162e697 200linkgit:git-config[1]).
041e69c9
BF
201
202Examples
203--------
204
db554bf0
JH
205* Add a new remote, fetch, and check out a branch from it
206+
041e69c9
BF
207------------
208$ git remote
209origin
210$ git branch -r
34a25d4c
TK
211 origin/HEAD -> origin/master
212 origin/master
213$ git remote add staging git://git.kernel.org/.../gregkh/staging.git
041e69c9 214$ git remote
041e69c9 215origin
34a25d4c
TK
216staging
217$ git fetch staging
218...
219From git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging
220 * [new branch] master -> staging/master
221 * [new branch] staging-linus -> staging/staging-linus
222 * [new branch] staging-next -> staging/staging-next
041e69c9 223$ git branch -r
34a25d4c
TK
224 origin/HEAD -> origin/master
225 origin/master
226 staging/master
227 staging/staging-linus
228 staging/staging-next
229$ git checkout -b staging staging/master
041e69c9
BF
230...
231------------
232
0b444cdb 233* Imitate 'git clone' but track only selected branches
db554bf0
JH
234+
235------------
236$ mkdir project.git
237$ cd project.git
238$ git init
239$ git remote add -f -t master -m master origin git://example.com/git.git/
240$ git merge origin
241------------
242
243
56ae8df5 244SEE ALSO
041e69c9 245--------
5162e697
DM
246linkgit:git-fetch[1]
247linkgit:git-branch[1]
248linkgit:git-config[1]
041e69c9 249
041e69c9
BF
250GIT
251---
9e1f0a85 252Part of the linkgit:git[1] suite