git remote 命令:添加、列表、删除、更改名称url、协议
在这篇文章中,我们将介绍如何使用git remote
命令来添加、查看和删除远程仓库,以及改变它们的名称和URL。虽然git本身很好,但当你和一群人一起使用它时,它才真正发挥了自己的作用。让我们来看看git远程命令,让你开始吧。
1. git remote add: 添加/注册/连接一个新的远程仓库
当你第一次使用git init命令创建本地仓库时,你不会有任何远程仓库连接。如果你运行下面的命令,显示所有连接的远程仓库的列表,将没有输出。
$ git remote
要在本地环境中与其他团队成员分享你的源代码,你需要连接到一个远程 repo。一个远程版本库可以是你自己配置的服务器,也可以使用Github或Bitbucket这样的服务。
无论哪种方式,也无论你使用何种通信协议,远程版本库都有一个以.git
结尾的地址。在下面的命令中使用这个地址来添加一个新的远程 repo。
如果是作为主 repo 的远程 repo,添加名为 origin
的远程 repo 是一个老惯例。
所以输入以下命令
$ git remote add origin [url]
下面是实际的执行结果
git remote add
命令完成时没有任何输出。如果你在输入后用git remote
命令进行验证,你会在列表中看到origin
这个名字。
与add
命令一起使用的一个常用选项是f
。这个选项将在添加远程 repo 后自动从新添加的 repo 的所有分支获取数据。
如果你收到错误信息remote origin already exists
,这意味着已经有一个与origin
名称相关的远程 repo,所以请检查它并删除重命名钩。你可以在下面的章节中看到如何做到这一点。
2. git remote -v: 检查远程 repo 名称和 URL
git remote
命令有一个-v(-verbose)
选项。这个选项允许你在连接的远程仓库列表中打印更多的粗略信息。
$ git remote -v
这是添加了另一个远程 repo 后的命令的样子。
与列表中的名字一起,URL也被打印出来。你还可以看到,同一个名字在fetch
和push
中被打印了两次,这意味着在某些情况下,两次使用的URL可能是不同的。
使用不同地址的主要原因是:让某个 repo 只读,屏蔽推送地址,或者使用不同的通信协议。
我们将在下面的第5节中看到如何分别设置每个地址。
3. git remote remove: 删除一个远程 repo
下面是如何删除与你设置的远程 repo 的连接。只需运行以下命令。
$ git remote remove [name]
或
$ git remote rm [name]
删除一个远程 repo 也将删除与之相关的所有分支和设置。执行画面会是这样的
4. git remote rename: 重命名远程 repo
接下来,你可以改变你给远程 repo 的名字。你可以通过运行以下命令来改变它。
$ git remote rename [old_name] [new_name]
当你重命名一个远程 repo 时,所有与之相关的分支和设置也会被更新。让我们看看执行画面
origin
的名字已经改为onion
了。
5. git remote set-url: 改变远程 repo 的 URL [#5]。
这里有一条命令,用于改变特定名称的URL设置。使用下面的命令。
$ git remote set-url [name] [new_url]
这个命令默认改变fetch
和push
地址;但是,如果你给它--push
选项,你只能改变推送URL。
$ git remote set-url --push [name] [new_push_url]
一旦你改变了PUSH URL,没有--PUSH
选项的命令将只改变FETCH URL地址。检查执行结果,看看URL地址是如何改变的。
6. 介绍一下远程仓库使用的4种协议
Git支持许多与远程仓库进行通信的协议。让我们来看看其中的四个。
6.1. 本地
如果一个git repo在同一个系统上,你可以通过文件系统访问它。这主要适用于测试或本地备份。
一个例子的地址可能是这样的
$ git remote add local_repo file:///path/to/local/repo.git
6.2. HTTP/HTTPS
HTTP(S)是Git托管服务的一个流行的通信协议,因为它是最常见的,而且不需要配置。 它与防火墙和代理等设置配合得很好,特别是在HTTPS的情况下,通过对加密的支持,有数据安全的额外好处。
一个例子的地址可能看起来像这样
$ git remote add remote_repo https://example.com/user/repo.git
6.3. SSH
SSH 是另一个流行的通信协议,因为它支持公钥/私钥加密,而且比 HTTP(S) 更快。 首次在 Git 中设置它比 HTTP(S) 更加复杂,但它可以为大型仓库提供性能优势。出于这个原因,大多数 Git 托管服务都支持它。
一个例子的地址可能是这样的
$ git remote add remote_repo ssh://user@example.com:/path/to/repo.git
6.4 Git
Git 通过 TCP 支持自己的 Git 协议。这个协议不需要用户认证或加密,所以在大多数开源项目中,包括Git,它通常被用于只读的实现。
一个例子的地址可能是这样的
$ git remote add remote_repo git://user@example.com:/path/to/repo.git
7. 总结
在这篇文章中,我们几乎涵盖了关于git remote
命令的所有知识,它是使用Git工作的起点。git remote
命令最终负责管理与本地Git环境相关的所有远程仓库、
它与大多数与远程仓库有关的命令一起使用,如git clone、git branch、git push
和git pull。
管理远程仓库是需要小心翼翼的,尤其是当你的项目成长,需要更加关注细节的时候。 我们希望这篇文章给你一个管理远程仓库的好起点。
