如何确定git url是否指向同一回购协议?
下面我有四个git clone命令,这三个命令都有效并克隆相同的存储库,但是它们都可以指向不同的存储库。我很好奇是否有任何方法来标准化这些URL(通过某种方式将它们解析为相同的id,注意它们是否都指向相同的repo),从而知道它们实际上都是相同的repo。有没有git命令可以告诉我一个标准化的url?有没有办法检查它们是否是相同的回购协议而不进行克隆?如果没有,我如何检查它们是否与克隆相同如何确定git url是否指向同一回购协议?,git,url,clone,Git,Url,Clone,下面我有四个git clone命令,这三个命令都有效并克隆相同的存储库,但是它们都可以指向不同的存储库。我很好奇是否有任何方法来标准化这些URL(通过某种方式将它们解析为相同的id,注意它们是否都指向相同的repo),从而知道它们实际上都是相同的repo。有没有git命令可以告诉我一个标准化的url?有没有办法检查它们是否是相同的回购协议而不进行克隆?如果没有,我如何检查它们是否与克隆相同 git clone ssh://git@github.com/reggi/example.git git
git clone ssh://git@github.com/reggi/example.git
git clone ssh://git@github.com/reggi/example
git clone git@github.com/reggi/example.git
git clone git@github.com/reggi/example
这实际上是一个惯例问题。
.git
部分是一个可选约定,GitHub和(我相信)一些其他托管站点都使用它
但是,不同方案中的任何内容都不能保证访问相同的内容。SSH和HTTP1方案对路径的含义和定义方式有着非常不同的概念
1即,在
http://git@github.com/some/url
,这通常是不重要的。你所说的“标准化”是什么意思?证明它们确实是同一个存储库的唯一方法是将某些对象引用推送到一个存储库,并验证它是否出现在其他存储库中。@JoshLee哇,真的吗?我想如果你把它们全部克隆,你至少可以检查哈希树,而不必推送和检查。仅仅因为git upload pack reggi/example
和git upload pack reggi/example。git
两者都产生相同的内容并不能证明它们是同一个存储库。而且,仅仅是为了解决问题,即使您发现将内容上载到$URL\u A
会导致它们立即出现在$URL\u B
中,但这并不意味着明天上载到$URL\u A
将更新$URL\u B
。幸运的是,当您定义掉所有困难的部分时,问题就变得容易了,例如,通过将URL约束到GitHub URL……这正是我面临的问题,URL可能指向不同的内容。有没有办法检查他们点击的303重定向,看看他们是否都指向同一个地方?理想情况下,没有克隆的东西?或者我必须克隆它们并检查?一个“统一资源指示器”,或者换句话说,给定资源的唯一标识符(repo)由方案定义。因此,如果您使用不同的方案,那么根据定义,它是不同的资源。换句话说,GitHub,Inc.保证其内容相同;不是由URL的结构决定的。(还有一些希望!)我找不到GitHub的具体保证(如果这是你想要的),但这里有最接近的东西。这是文件。这里有一个隐含的承诺,即它们都按照这里记录的方式工作。