git remote
命令用于操作(添加、移除和处理)
远程仓库。它有十个子命令:
git remote add
git remote rename
git remote remove
git remote set-branches
git remote set-head
git remote get-url
git remote set-url
git remote show
git remote prune
git remote update
每个子命令可能有自己的子命令或选项;如果没有任何子命令运行,
git remote
就会简单地列出所有远程仓库。
由于某种原因,您只询问了这十个子命令中的两个:
add
和
set-url
。这可能是因为您不确定首先什么是
远程仓库。简短的答案是,一个
远程仓库只是一个名称,但它是一个用于跟踪另一个 Git 仓库的名称,在某个其他URL上。
虽然
origin
是一个相当标准的远程仓库名称,但它并不是唯一可能的远程仓库名称,而且您自己的仓库可能没有远程仓库,在这种情况下,
origin
不是您的远程仓库之一。
然而,许多(如果不是大多数)仓库只有一个远程仓库,因为许多仓库是通过
git clone
创建的。
git clone
命令会自动创建一个远程仓库,它将其命名为
origin
,除非您告诉它使用其他名称。因此,大多数仓库已经有了一个名称为
origin
的远程仓库。
git remote add
git remote add
的作用是添加一个
新的远程仓库。 如果您现在有一个远程仓库,并添加另一个,则会有两个远程仓库。 如果没有,则添加一个,您将拥有一个。
再次强调,远程仓库的目的是为了给另一个 Git 仓库命名,并且该其他 Git 仓库将在某个 URL 上被找到。因此,要使远程仓库有用,它需要一个URL。 因此,
git remote add
接受两个参数:要添加的
新远程仓库的名称和与该名称关联的URL。
这里省略了很多关于远程仓库的高级操作。尽管我个人觉得其中一些并不实用,但它们是 git remote add
命令有一堆选项的原因。
git remote set-url
git remote set-url
的主要作用是更改已存在的远程仓库的 URL。因此需要提供一个现有远程仓库的名称和一个新 URL。默认操作是删除旧 URL 并替换为新的。
Git 不限制您只能使用一个 URL:它允许每个命名的远程仓库附加多个 URL。当一个远程仓库有多个 URL 时会发生什么事情,这有点棘手;最好在熟悉单个URL远程仓库之后再进行这样的操作。
git config
git config
命令是更低级别的操作。您可以通过 Git 中的 配置项 大部分地进���设置或更改,包括添加、删除远程仓库以及更改与任何一个特定远程仓库相关联的 URL。这意味着较高级别的 git remote
命令通常会转换成一个或多个低级别的 git config
操作。如果您确切地知道哪些配置项在以哪种方式控制着哪个(些)远程仓库,那么您可以使用 git config
来实现一些与 git remote
相同的操作。
git remote
命令可以完成的一些���作并不仅仅是配置设置,因此并非所有操作都可以通过这种方式进行转换。但是添加或删除一个远程仓库,并更改其 URL,则可以进行转换。
添加新的远程仓库基本上包括运行两个 git config
命令。如果远程仓库的名称是 R,则这两个配置项分别是 remote.R.url
和 remote.R.fetch
。通常不推荐只设置第一个而不设置第二个,并且您需要知道要将第二个设置为什么,因此最好使用 git remote
来添加新的远程仓库。
更改现有远程仓库的(单个)URL 只需要运行一个 git config 命令。 对于远程仓库 R,可以使用 git config remote.
R.url
new-url 命令来更改 URL(默认情况下,git config 使用 --local 参数,因此可以省略)。 URL 不影响 fetch 值,因此使用 git config 进行更改比使用 git remote 更加安全(尽管有点无意义)。 但是,如果某个特定的远程名称有多个 URL,则 git remote 添加了安全检查,而 git config 完全绕过这些检查。