Setup and Config
Getting and Creating Projects
Basic Snapshotting
Branching and Merging
Sharing and Updating Projects
Inspection and Comparison
Patching
Debugging
External Systems
Server Admin
Guides
- gitattributes
- Command-line interface conventions
- Everyday Git
- Frequently Asked Questions (FAQ)
- Glossary
- Hooks
- gitignore
- gitmodules
- Revisions
- Submodules
- Tutorial
- Workflows
- All guides...
Administration
Plumbing Commands
- 2.45.1 → 2.46.2 no changes
- 2.45.0 04/29/24
- 2.37.1 → 2.44.2 no changes
- 2.37.0 06/27/22
- 2.36.1 → 2.36.6 no changes
- 2.36.0 04/18/22
- 2.35.1 → 2.35.8 no changes
- 2.35.0 01/24/22
- 2.30.1 → 2.34.8 no changes
- 2.30.0 12/27/20
- 2.29.1 → 2.29.3 no changes
- 2.29.0 10/19/20
- 2.23.1 → 2.28.1 no changes
- 2.23.0 08/16/19
- 2.18.1 → 2.22.5 no changes
- 2.18.0 06/21/18
- 2.17.1 → 2.17.6 no changes
- 2.17.0 04/02/18
- 2.10.5 → 2.16.6 no changes
- 2.9.5 07/30/17
- 2.8.6 no changes
- 2.7.6 07/30/17
- 2.6.7 05/05/17
- 2.4.12 → 2.5.6 no changes
- 2.3.10 09/28/15
- 2.1.4 → 2.2.3 no changes
- 2.0.5 12/17/14
概述
git remote [-v | --verbose] git remote add [-t <分支>] [-m <master>] [-f] [--[no-]tags] [--mirror=(fetch|push)] <名称> <URL> git remote rename [--[no-]progress] <旧名> <新名> git remote remove <名称> git remote set-head <名称> (-a | --auto | -d | --delete | <分支>) git remote set-branches [--add] <名称> <分支>… git remote get-url [--push] [--all] <名称> git remote set-url [--push] <名称> <新地址> [<旧地址>] git remote set-url --add [--push] <名称> <新地址> git remote set-url --delete [--push] <名称> <地址> git remote [-v | --verbose] show [-n] <名称>… git remote prune [-n | --dry-run] <名称>… git remote [-v | --verbose] update [-p | --prune] [(<组> | <远程仓库>)…]
命令
不带参数,显示现有远程的列表。有几个子命令可用于对远程执行操作。
- add
-
在 <URL> 为存储库添加一个名为 <名称> 的远程名称。然后可以使用命令 `git get <名称>`创建和更新远程跟踪分支 <名称>/<分支> 。
使用
-f
选项,在设置远程信息之后立即运行git get <名称>
。使用
--tags
选项,git get <名称>
从远程仓库导入每个标记。使用
--no-tags
选项,git fetch <名称>
不会从远程仓库导入标签。默认情况下,只导入获取的分支上的标记(参见 git-fetch[1])。
使用
-t <分支>
选项,将创建一个仅跟踪refs/remotes/<名称>/
命名空间下的所有分支的引用规范,而不是用于远程跟踪的默认引用规范通配符。您可以提供多个-t <分支>
来跟踪多个分支,而不需要获取所有分支。使用
-m <master>
选项,可以设置一个符号引用/remotes/<名称>/HEAD
来指向远程仓库的<master>
分支。另请参见 set-head 命令。当用
--mirror=fetch
创建一个 fetch 镜像时, 引用不会被存储在 refs/remotes/ 命名空间中,而是远程的 refs/ 中的所有内容将直接被镜像到本地版本库的 refs/ 中。这个选项只有在裸库中才有意义,因为获取会覆盖任何本地提交。当用
--mirror=push
创建推送镜像时,git push
的行为就像传递--mirror
一样。 - rebase
-
将名为 < 旧名称 > 的远程重命名为 < 新名称 > 。所有远程跟踪的分支和远程的配置设置都被更新。
如果 <旧名称 >和< 新名称 >相同,并且< 旧名称 >是
$GIT_DIR/remotes
或$GIT_DIR/branches
下的文件,远程将被转换为配置文件格式。 - remove
- rm
-
删除名为 < 名称 > 的远程。该远程的所有远程跟踪分支和配置设置都被删除。
- set-head
-
设置或删除命名远程仓库的默认分支(即符号引用
refs/remotes/<名称>/HEAD
的目标)。不需要为远程仓库设置默认分支,但允许指定远程仓库的名称来代替特定分支。例如,如果origin
的默认分支设置为master
,则可以在通常指定origin/master
的任何位置指定origin
。设置
-d
或--delete
选项,符号引用refs/remotes/<名称>/HEAD
将被删除.使用
-a
或--auto
,查询远程仓库以确定其HEAD
,然后将符号引用refs/remotes/<名称>/HEAD
设置为同一分支。 例如,如果远程HEAD
指向`next`,git remote set-head origin -a`会将符号引用 `refs/remotes/origin/HEAD
设置为refs/remotes/origin/next
。这仅在refs/remotes/origin/next
已经存在时才有效;如果不是,则必须首先获取它。使用
<branch>
显式地设置符号引用refs/remotes/<名称>/HEAD
。例如,git remote set-head source master
会将这个符号引用 ` refs/remotes/source/HEAD`设置为ref/remotes/source/master
。这只有在refs/remote/source/master
已经存在的情况下才能工作;如果不存在,则必须首先获取它。 - set-branches
-
改变命名的远程所追踪的分支列表。 这可以用来在最初设置一个远程分支后,追踪一个可用的远程分支子集。
被命名的分支将被解释为在
git remote add`命令中用 `-t
选项指定的。使用
--add
,不是替换当前跟踪分支列表,而是添加到该列表中。 - get-url
-
检索一个远程的 URLs。
insteadOf
和pushInsteadOf
的配置在此列出。默认情况下,只有第一个 URL 被列出。使用
--push
,查询的是推送的URLs,而不是获取的URLs。使用 `--all`选项,远程仓库的所有 URL 将被列出。
- set-url
-
改变远程的URLs。将远程 <名称> 的第一个匹配正则表达式 <旧url> 的URL(如果没有给出 <旧url>,则为第一个URL)设置为 <新url>。如果 <旧url> 不匹配任何URL,就会发生错误,并且什么都不会被改变。
使用
--push
,推送 URLs 被操作,而不是获取 URLs。使用
--add
,不改变现有的 URLs,而是添加新的 URL。使用 `--delete`选项,不是改变现有的 URL,而是删除远程 <名称> 的所有正则匹配 <URL> 的 URL。 试图删除所有非推送 URLs 是错的。
请注意,推送 URL 和获取 URL,即使它们的设置不同,也必须指的是同一个地方。 你推送到推送 URL 的内容应该是你立即从获取的 URL 中获取的内容。 如果你试图从一个地方(如你的上游)获取并推送到另一个地方(如你的发布库),请使用两个独立的远程。
- show
-
提供关于远程 <名称> 的一些信息。
使用
-n
选项,就不会先用git ls-remote <名称>
查询远程头指针,而是使用缓存的信息。 - prune
-
删除与 <名称> 相关的陈旧引用。默认情况下,<名称>下的陈旧远程跟踪分支会被删除,但根据全局配置和远程的配置,我们甚至可能修剪没有被推送到那里的本地标签。相当于
git fetch --prune <名称>
,只是不会取到新的引用。参见 git-fetch[1] 的剪枝部分,了解它将根据不同的配置修剪什么。
使用
--dry-run
选项,报告哪些分支将被修剪,但实际上不修剪它们。 - update
-
为仓库中由
remotes.<组>
定义的远程或远程组获取更新。如果在命令行中既没有指定组也没有指定远程,将使用配置参数 remotes.default;如果没有定义 remotes.default,所有没有将配置参数remote.<名称>.skipDefaultUpdate
设置为 true 的远程将被更新。 (参见 git-config[1])。使用
--prune
选项,对所有被更新的远程进行修剪。
讨论
远程配置是通过 remote.origin.url
和 remote.origin.fetch
配置变量实现的。 (见 git-config[1])。
退出状态码
成功的时候,退出状态码为 0
。
当诸如 add、rename 和 remove 等子命令不能找到相关的远程,退出状态码为 2
。当远程已经存在时,退出状态码是 3
。
对于其他错误,退出状态码可能是任何其他非零值。
实例
-
添加一个新的远程,获取并检出一个分支
$ git remote origin $ git branch -r origin/HEAD -> origin/master origin/master $ git remote add staging git://git.kernel.org/.../gregkh/staging.git $ git remote origin staging $ git fetch staging ... From git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging * [new branch] master -> staging/master * [new branch] staging-linus -> staging/staging-linus * [new branch] staging-next -> staging/staging-next $ git branch -r origin/HEAD -> origin/master origin/master staging/master staging/staging-linus staging/staging-next $ git switch -c staging staging/master ...
-
模仿 git clone,但只跟踪选定的分支
$ mkdir project.git $ cd project.git $ git init $ git remote add -f -t master -m master origin git://example.com/git.git/ $ git merge origin
GIT
属于 git[1] 文档