## git remote 罗列、添加和删除远端仓库别名
不像中心化的版本控制系统(客户端与服务端很不一样),Git 仓库基本上都是一致的,并且并可以同步他们。 这使得拥有多个远端仓库变得容易 —— 你可以拥有一些只读的仓库,另外的一些也可写的仓库。
当你需要与远端仓库同步的时候,不需要使用它详细的链接。Git 储存了你感兴趣的远端仓库的链接的别名或者昵称。 你可以使用 `git remote` 命令管理这个远端仓库列表。
### git remote 列出远端别名
如果没有任何参数,Git 会列出它存储的远端仓库别名了事。默认情况下,如果你的项目是克隆的(与本地创建一个新的相反), Git 会自动将你的项目克隆自的仓库添加到列表中,并取名“origin”。 如果你执行时加上 `-v` 参数,你还可以看到每个别名的实际链接地址。
~~~
$ git remote
origin
$ git remote -v
origin git@github.com:github/git-reference.git (fetch)
origin git@github.com:github/git-reference.git (push)
~~~
在此你看到了该链接两次,是因为 Git 允许你为每个远端仓库添加不同的推送与获取的链接,以备你读写时希望使用不同的协议。
### git remote add 为你的项目添加一个新的远端仓库
如果你希望分享一个本地创建的仓库,或者你想要获取别人的仓库中的贡献 —— 如果你想要以任何方式与一个新仓库沟通,最简单的方式通常就是把它添加为一个远端仓库。 执行 `git remote add [alias] [url]` 就可以。 此命令将 `[url]` 以 `[alias]` 的别名添加为本地的远端仓库。
例如,假设我们想要与整个世界分享我们的 Hello World 程序。 我们可以在一台服务器上创建一个新仓库(我以 GitHub 为例子)。 它应该会给你一个链接,在这里就是“git@github.com:schacon/hw.git”。 要把它添加到我们的项目以便我们推送以及获取更新,我们可以这样:
~~~
$ git remote
$ git remote add github git@github.com:schacon/hw.git
$ git remote -v
github git@github.com:schacon/hw.git (fetch)
github git@github.com:schacon/hw.git (push)
~~~
像分支的命名一样,远端仓库的别名是强制的 —— 就像“master”,没有特别意义,但它广为使用, 因为 `git init` 默认用它;“origin”经常被用作远端仓库别名,就因为 `git clone` 默认用它作为克隆自的链接的别名。此例中,我决定给我的远端仓库取名“github”,但我叫它随便什么都可以。
### git remote rm 删除现存的某个别名
Git addeth and Git taketh away. 如果你需要删除一个远端 —— 不再需要它了、项目已经没了,等等 —— 你可以使用 `git remote rm [alias]` 把它删掉。
~~~
$ git remote -v
github git@github.com:schacon/hw.git (fetch)
github git@github.com:schacon/hw.git (push)
$ git remote add origin git://github.com/pjhyett/hw.git
$ git remote -v
github git@github.com:schacon/hw.git (fetch)
github git@github.com:schacon/hw.git (push)
origin git://github.com/pjhyett/hw.git (fetch)
origin git://github.com/pjhyett/hw.git (push)
$ git remote rm origin
$ git remote -v
github git@github.com:schacon/hw.git (fetch)
github git@github.com:schacon/hw.git (push)
~~~
> **简而言之** 你可以用 `git remote` 列出你的远端仓库和那些仓库的链接。 你可以使用 `git remote add` 添加新的远端仓库,用 `git remote rm` 删掉已存在的那些。