当前位置: 首页 > 知识库问答 >
问题:

“git远程添加源代码”、“设置url源代码”和配置之间有什么区别。。。?

陆琦
2023-03-14

似乎至少有三种方法可以做听起来相同的事情。

# 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
  • 他们的区别是什么

注意:这看起来可能是这个的重复,但这些答案是不完整的,并且不能解释更改URL与“远程”的区别?

编辑:

做一些进一步的谷歌搜索:从这个SO答案中:

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

这是:

不是远程存储库名称。它更像是一个本地别名,设置为远程存储库URL的键。

共有3个答案

阙俊友
2023-03-14

在第一种情况下,当您运行remote origin时some@github.com/用户/repo,您创建了一个新的遥控器,名称为origin

在另外两种情况下,git正在搜索现有的远程设备,这些远程设备的名称是origin,对于这些示例,没有首选的方法,因为命令会产生不同的结果。

孟选
2023-03-14

虽然没什么不同,但它们是不同的

实际上,当您运行git remote add origin时git@github.com:User/TestRepo。git,然后创建一个名为origin的新远程设备。

当您运行git远程设置url来源时git@github.com:User/TestRepo。git,git搜索具有相同名称来源的现有远程存储库,并更改其远程存储库url,但如果git无法找到任何具有名称来源的远程存储库,它将引发致命错误:没有此类远程“来源”

高山
2023-03-14

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

  1. git远程添加
  2. git远程重命名
  3. git远程删除
  4. git远程设置分支
  5. git远程设置头
  6. git远程get-url
  7. git远程set-url
  8. git远程显示
  9. git远程修剪
  10. git远程更新

每个子命令可能有自己的子子命令或选项;如果根本没有子命令运行,git Remote只会列出所有遥控器。

无论出于什么原因,您只询问了十个子命令中的两个:addset-url。这可能是因为您首先不确定远程是什么。简短的答案是远程只是一个名称,但它是一个用于在其他URL跟踪另一个Git存储库的名称。

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

尽管如此,许多(如果不是大多数)存储库只有一个远程,因为很多是由git clone创建的。git clone命令会自动创建一个远程,它将其命名为,除非您告诉它使用其他名称。所以大多数存储库已经有了一个名称

git remote add的作用是添加一个新的遥控器。如果您现在有一个遥控器,然后添加另一个,那么您将有两个遥控器。如果你没有,再加上一个,你就会有一个。

同样,远程应用的目的是命名另一个Git存储库,而另一个Git存储库将在某个URL上找到。因此,要使远程应用变得有用,它需要一个URL。因此,git remote add接受两个参数:要添加的新远程设备的名称,以及与该名称关联的URL。

(这省略了很多你可以用遥控器做的更特别的事情。我自己从来没有发现其中一些有用,但它们是git远程添加有一堆选项标志的原因。)

git remote set url的主要用途是更改与某些现有远程设备关联的url。因此,它采用现有远程服务器的名称和一个新的URL。默认操作是删除旧URL并插入新URL。

Git试图不将您限制在一个URL上:它允许将多个URL附加到每个指定的远程服务器。当任何一个远程设备都有多个URL时,会发生什么,这有点棘手;在你对单一URL遥控器感到满意之前,最好不要这样做。

git config命令的级别要低得多。您可以在Git中进行或更改的大多数设置最终都是通过配置条目完成的,这包括添加或删除远程设备以及更改与任何特定远程设备关联的URL。这意味着更高级别的git remote命令通常会转换为一个或多个低级别的git config操作。如果您确切地知道哪些配置条目以何种方式控制哪些远程设备,那么可以使用git config实现与git remote相同的功能。

git Remote可以做的一些事情不仅仅是配置设置,因此并非所有事情都可以像这样翻译。但是添加或删除远程,以及更改其URL,是,因此是可以的。

添加一个新的远程设备基本上包括运行两个git config命令。如果遥控器的名称为R,则两个配置项为remote。R.url远程。R.fetch。一般来说,设置第一个而不设置第二个并不是一个好主意,您需要知道将第二个设置为什么,因此使用git remote添加新的远程设备更安全。

更改现有远程设备的(单个)URL只需要运行一个git config命令。对于remoter,这就是git config remote。R.url新url(--localgit config的默认值,因此您可以省略它)。URL不会影响fetch值,因此使用git config而不是使用git remote执行此操作是安全的(尽管有点毫无意义)。但是,如果有多个URL附加到某个特定的远程名称,git remote会添加安全检查,git config会完全绕过这些检查。

 类似资料:
  • 我创建了一个新的存储库: 然后我想将我的提交推送到github上创建的空远程存储库,因此我必须设置远程。 使用以下命令之间有什么区别 最后我执行推送: 当我在之后调用时会发生什么?是否创建来源?如果origin在之后已经存在,那么在我的场景中使用这些命令没有区别,对吧?

  • configure脚本配置Apache的源代码树并且将其安装到指定的平台上。丰富的选项允许你根据自己的特定状况和特定需求对Apache进行定制。 这个脚本位于源代码树的根目录下,并且只能用于类Unix操作系统。要了解其他平台的信息,参见:针对特定平台的说明文档。 语法 你必须在源代码树的根目录下调用configure脚本,语法如下: ./configure [OPTION]... [VAR=VAL

  • 问题内容: 我可以在Go的源代码中的哪里找到它们的实现。 事实证明,“代码搜索”功能对于这种语言的主要功能几乎是无用的,而且我没有确定要搜索C函数,Go函数还是什么的好方法。 将来我又如何在不求助于此的情况下解决这类问题?(即:教我钓鱼) 编辑 PS我已经找到了http://golang.org/pkg/builtin/#make,但是,与其余的go包不同的是,它不包含指向源的链接,大概是因为它在

  • 问题内容: http://download.redis.io/redis-stable/deps/geohash- int/geohash_helper.c 通过上面的URL,我们知道有两个概念,一个是geohashBoundingBox,另一个是Area,我的问题是有什么区别它们之间,为什么我们都需要它们?还有为什么句子“ geohashGetCoordRange(&long_range,&la

  • 在另一个关于将字符串作为字符数组进行单步执行的线程中,提示这个问题的具体注释是“注意,此技术给您的是字符,而不是代码点,这意味着您可能获得代理项。”我不是真的理解,所以我想最好是在一个新的问题中要求澄清,而不是对一个5年前的问题进行一系列的评论。

  • 问题内容: 我正在尝试对术语“字符”,“代码点”和“代理”进行解释,尽管这些术语不仅限于Java,但如果存在特定于语言的差异,我希望将其解释为它与Java有关。 我发现了一些有关字符和代码点之间差异的信息,字符是为人类用户显示的内容,代码点是对该特定字符进行编码的值,但是我不知道代理。什么是代理,它们与字符和代码点有何不同?我对字符和代码点是否有正确的定义? 在另一个关于将字符串作为字符数组步进的