题 如何确定最初克隆本地Git存储库的URL?


几天前我从GitHub上撤了一个项目。我已经发现GitHub上有几个叉子,我忽略了我最初使用的那个。如何确定我拉出的哪个叉子?


2777
2017-11-03 16:47


起源


使用git 2.7(2015年第4季度), git remote get-url origin 将是可能的。看到 我的答案如下 - VonC
我相信你的意思 git remote get-url origin。 - shiri
codingaffairs.blogspot.com/2017/01/... - Hammad Tariq
git remote get-url origin 对我不起作用 - 可能已经弃用了? git remote show origin 虽然工作。 - Klik
git remote -v 给你很多信息,包括这个。 - Thorbjørn Ravn Andersen


答案:


如果只想要远程URL,或者参照完整性已被破坏:

git config --get remote.origin.url

如果您需要完整输出或参照完整性完好无损:

git remote show origin

使用时 git clone (来自GitHub,或任何源存储库)克隆源的默认名称是“origin”。运用 git remote show 将显示有关此远程名称的信息。前几行应显示:

C:\Users\jaredpar\VsVim> git remote show origin
* remote origin
  Fetch URL: git@github.com:jaredpar/VsVim.git
  Push  URL: git@github.com:jaredpar/VsVim.git
  HEAD branch: master
  Remote branches:

如果要使用脚本中的值,可以使用此答案中列出的第一个命令。


3939
2017-11-03 16:50



如果将jgit与amazon-s3一起使用,请使用git config,如下所述。 - barryku
虽然与原始问题的目的无关,但请注意,如果尝试获取“推送URL”并为指定的远程输入多个URL,则您需要使用 git remote show origin (可选地使用@Casey提供的-n标志),或者使用 git remote -v 正如@Montaro和@rodel所建议的那样。 - Amazingant
“如果参照完整性被打破”是什么意思?另一个答案中有一个评论提到远程URL“不再可用”的情况:这是吗?哪里“不可用”意思是“不可达”? - Eric Lebigot
@JaredPar参考完整性是什么意思? - Akshayraj Kore
我发现令人震惊的是,这个问题已被多次投票并被观看了很多次。 Stack-overflow的正面证明,Git的负面证明 - Mads Boyd-Madsen


如果您希望将其用于脚本编写目的,则只能获取URL

git config --get remote.origin.url

498
2017-11-03 19:35



这是。比上面的解决方案更快。 - K-RAN
这是正确的答案。如果远程网址不再可用,它会更快,甚至可以工作(git remote show origin 只显示“conq:repository不存在。”)。 - apfelbox
由于配置选项,这不是正确的答案 url.<base>.insteadOf。看到我的回答 - git有一个命令用于此目的。 - arcresu
@arcresu酷,给你+1!在我的辩护中,该命令直到2011年3月才被添加,直到2012年9月才被记录。 - Cascabel
似乎不适用于--git-dir或--work-tree - Catskul


你可以试试:

git remote -v

它将打印所有遥控器的提取/推送URL。


422
2018-01-29 12:01





得到答案:

git ls-remote --get-url [REMOTE]

这比阅读配置更好;参考 手册页 git-ls-remote

--get-URL

考虑到扩展给定远程存储库的URL   任何 "url.<base>.insteadOf" 配置设置(见 git-config(1))和   退出而不与遥控器通话。

正如@Jefromi指出的那样,这个选项被加入了 v1.7.5 并且直到 v1.7.12.2 (2012-09)。


196
2018-06-02 05:15



好的:这也会为以前的版本提供相同的功能> git remote -v | grep fetch | awk'{print $ 2}' - ravi.zombie


使用Git 2.7(2015年1月5日发布),您可以使用更加一致的解决方案 git remote

git remote get-url origin

(漂亮的吊坠 git remote set-url origin <newurl>

看到 提交96f78d3 (2015年9月16日)by Ben Boeckel(mathstuf
(合并 Junio C Hamano - gitster  -  在 提交e437cbd,2015年10月5日)

remote:添加get-url子命令

扩大 insteadOf 是的一部分 ls-remote --url 而且没有办法   扩大 pushInsteadOf 同样。
  添加一个 get-url 子命令既可以查询,也可以获取所有已配置的URL。

get-url:

检索远程的URL。
  的配置 insteadOf 和 pushInsteadOf 在这里扩展。
  默认情况下,仅列出第一个URL。

  • 随着''--push',查询推送URL而不是获取URL。
  • 随着''--all',将列出遥控器的所有URL。

在git 2.7之前,你有:

 git config --get remote.[REMOTE].url
 git ls-remote --get-url [REMOTE]
 git remote show [REMOTE]

63
2017-10-07 12:07



5年后,很多事情发生了变化,这应该是现在接受的答案。但也许可以添加2.7之前的语法。 - msparer
@msparer我已经更新了答案。 - VonC


总而言之,至少有四种方式:

(以下是针对官方Linux存储库的尝试)

最少信息:

$ git config --get remote.origin.url
https://github.com/torvalds/linux.git

$ git ls-remote --get-url
https://github.com/torvalds/linux.git

更多信息:

$ git remote -v
origin    https://github.com/torvalds/linux.git (fetch)
origin    https://github.com/torvalds/linux.git (push)

更多信息:

$ git remote show origin
* remote origin
  Fetch URL: https://github.com/torvalds/linux.git
  Push  URL: https://github.com/torvalds/linux.git
  HEAD branch: master
  Remote branch:
    master tracked
  Local branch configured for 'git pull':
    master merges with remote master
  Local ref configured for 'git push':
    master pushes to master (up to date)

43
2018-05-15 15:28



注意 git config --get remote.origin.url 检索使用设置的原始URL git remote add ... 要么 git remote set-url ... 而 git ls-remote --get-url origin 检索实际用于访问远程的URL - 在存在时可能会有所不同 git config --global url.XXX.insteadOf YYY。 所以两个输出可能不同!  另请注意 git ls-remote --get-url (不 origin)不需要检索 origin相反,它显示了被跟踪的上游,因此它将失败,例如在分离的HEAD状态。 - Tino


简短回答:

$ git remote show -n origin

或者,纯粹快速脚本的替代方案:

$ git config --get remote.origin.url

一些信息:

  1. $ git remote -v 将打印所有遥控器(不是你想要的)。你想要出身吗?
  2. $ git remote show origin 更好,只显示 origin 但需要太长时间(在git版本1.8.1.msysgit.1上测试)。

我结束了: $ git remote show -n origin,这似乎是最快的。同 -n 它不会获取远程头(AKA分支)。你不需要那种类型的信息,对吗?

http://www.kernel.org/pub//software/scm/git/docs/git-remote.html

你可以申请 | grep -i fetch 所有三个版本只显示获取URL。

如果您需要纯粹的速度,那么使用:

$ git config --get remote.origin.url

谢谢 @Jefromi 指出这一点。


16
2018-02-27 18:11