"git remote add origin","set-url origin"和config ...有什么区别?

not*_*bit 2 git

似乎至少有3种方法可以做同样的事情.

# 1. git remote add origin https://x@bitbucket.org/x/y.git
# 2. git remote set-url origin ssh://git@bitbucket.org/x/y.git 
# 3. git config --local remote.origin.url ssh://git@bitbucket.org/x/y.git
Run Code Online (Sandbox Code Playgroud)
  • 他们有什么不同?
  • 什么是首选或标准方式?

注意:这似乎是一个重复,但这些问题的答案是不完整的,不解释更改URL VS"远程"的区别?

编辑:

进一步谷歌搜索:从这个 SO回答:

a remotegit基本上是一个不同存储库的书签,您可能希望从中获取或推送代码.带书签的存储库可能位于本地计算机上的不同文件夹中,位于远程服务器上,或者甚至可能是存储库本身......但最简单的类比是书签.存储库甚至不必是存储库的版本,它甚至可能是完全不相关的存储库.

:

origin不是远程仓库名.它是一个本地别名集,作为远程​​存储库URL的密钥.

tor*_*rek 5

git remote命令用于操作(使用,添加和删除)遥控器.它有十个(!)子命令:

  1. git remote add
  2. git remote rename
  3. git remote remove
  4. git remote set-branches
  5. git remote set-head
  6. git remote get-url
  7. git remote set-url
  8. git remote show
  9. git remote prune
  10. git remote update

每个子命令可以具有其自己的子子命令或选项; 如果根本没有子命令运行,git remote只需列出所有遥控器.

无论出于何种原因,您只询问十个子命令中的两个:addset-url.这可能是因为您不确定遥控器的位置.简短的回答是,遥控器只是一个名称,但它是一个名称,用于跟踪另一个Git存储库,在某个其他URL.

虽然它origin是一个非常标准的远程名称,但它不是唯一可能的远程名称 - 并且您自己的存储库可能没有远程名称,在这种情况下origin不是您的某个远程名称,因为您没有.

尽管如此,许多(如果不是大多数)存储库只有一个遥控器,因为有很多存储库是由它创建的git clone.该git clone命令会自动创建一个遥控器,origin除非您告诉它使用其他名称,否则它会命名.所以大多数存储库都有一个名称origin.

git remote add

什么git remote add是添加新的遥控器.如果你现在有一个遥控器,并且你添加另一个遥控器,那么你将有两个遥控器.如果你没有,并添加一个,你将拥有一个.

同样,远程的要点是命名另一个Git存储库,并在某个URL上找到其他Git存储库.因此,要使远程有用,它需要一个URL.因此,git remote add需要两个参数:要添加的远程的名称以及与该名称关联的URL.

(这省略了很多用遥控器可以做的更好的特殊事情.我从来没有发现它们中的一些有用,但它们是有一堆选项标志的原因git remote add.)

git remote set-url

什么git remote set-url是对的,主要是,要改变一些相关的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.urlremote.R.fetchgit remote

更改现有远程的(单个)URL包括仅运行一个 git config命令.对于远程R,这是(默认值,因此您可以省略它).URL不会影响该值,因此使用它来安全(尽管有点无意义)而不是使用它.但是,如果某个特定远程名称附加了多个URL ,则会添加完全绕过的安全检查.git config remote.R.url new-url--localgit configfetchgit configgit remotegit remotegit config