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

问题描述:

我在 GitHub 上提取了一个包含多个 fork 的项目,但忘记了它是哪个 fork。我如何确定我拉了哪个叉子?

解决方案1:

保持自己快人一步,享受全网独家提供的一站式外包任务、远程工作、创意产品订阅服务–huntsbot.com

如果您只需要远程 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:

如果您想在脚本中使用该值,您将使用此答案中列出的第一个命令。

如果将 jgit 与 amazon-s3 一起使用,请使用 git config,如下所述。

虽然与原始问题的目的无关,但请注意,如果尝试获取“推送 URL”并且为指定的远程输入了多个 URL,您将需要使用 git remote show origin(可选地使用 -n 标志由@Casey 提供),或使用@Montaro 和@rodel 建议的git remote -v。

@ayjay ´~/.gitconfig 对所有 git 存储库都是全局的,这里来自通常位于 .git/config 中的本地配置(但是对于 git-submodules 答案有点困难)。请注意,strace git config --get remote.origin.url 是您的朋友。

但原始 URL 不必是当前使用的遥控器的 URL。要显示实际使用的 URL,您需要以下解决方案:stackoverflow.com/a/40630957/1069083

注意:如果存储的凭据不再具有对原始存储库的所需访问权限,则方法 git remote show origin 不起作用。在这种情况下,请尝试 git remote -v

解决方案2:

huntsbot.com提供全网独家一站式外包任务、远程工作、创意产品分享与订阅服务!

如果您希望将此用于脚本目的,您只能获取 URL

git config --get remote.origin.url

这是正确的答案。如果远程 url 不再可用(git remote show origin 只显示“conq:存储库不存在。”),它会更快,甚至可以工作。

由于配置选项 url..insteadOf,这不是完全正确的答案。请参阅我的回答 - git 有一个用于此目的的命令。

解决方案3:

打造属于自己的副业,开启自由职业之旅,从huntsbot.com开始!

你可以试试:

git remote -v

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

@Montaro 完全正确,没有它,只会打印遥控器的名称(例如 origin)。

解决方案4:

HuntsBot周刊–不定时分享成功产品案例,学习他们如何成功建立自己的副业–huntsbot.com

要得到答案:

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

这比读取配置要好;请参阅man page for git-ls-remote:

–get-url 扩展给定远程存储库的 URL,考虑任何“url…insteadOf”配置设置(参见 git-config(1))并退出而不与远程通信。

正如@Jefromi 所指出的,此选项是在 v1.7.5 中添加的,直到 v1.7.12.2 (2012-09) 才记录在案。

好一个:这也将为以前的版本提供相同的功能> git remote -v| grep fetch|awk '{打印 $2}'

我认为大多数其他答案更多的是关于 git 命令的展示和讲述以及关于 git 历史的阐述。这是唯一不假定您的上游被称为 origin 的答案。

这是旧 remote get-url 选项的最直接替代。这是一个插入式的替代品。

解决方案5:

huntsbot.com汇聚了国内外优秀的初创产品创意,可按收入、分类等筛选,希望这些产品与实践经验能给您带来灵感。

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

git remote get-url origin

(git remote set-url origin 的漂亮吊坠)

请参阅 Ben Boeckel (mathstuf) 的commit 96f78d3(2015 年 9 月 16 日)。 (由 Junio C Hamano – gitster – 在 commit e437cbd 中合并,2015 年 10 月 5 日):

remote: add get-url 子命令 Expanding 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]

解决方案6:

HuntsBot周刊–不定时分享成功产品案例,学习他们如何成功建立自己的副业–huntsbot.com

总结起来,至少有四种方式:

使用官方 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)

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

解决方案7:

huntsbot.com – 高效赚钱,自由工作

我认为如果您不对其进行操作,您可以在 .git/config 和 remote[“origin”] 下找到它。

解决方案8:

huntsbot.com洞察每一个产品背后的需求与收益,从而捕获灵感

对我来说,这是更简单的方法(少打字):

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

实际上,我已将其放入名为 s 的 alias 中:

git remote -v
git status

您可以通过以下方式添加到您的个人资料:alias s=‘git remote -v && git status’

HuntsBot周刊–不定时分享成功产品案例,学习他们如何成功建立自己的副业–huntsbot.com

解决方案9:

huntsbot.com提供全网独家一站式外包任务、远程工作、创意产品分享与订阅服务!

简短的回答:

$ git remote show -n origin

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

$ git config --get remote.origin.url

一些信息:

$ git remote -v 将打印所有遥控器(不是你想要的)。你想要起源对吗? $ 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指出这一点。

解决方案10:

huntsbot.com提供全网独家一站式外包任务、远程工作、创意产品分享与订阅服务!

我更喜欢这个,因为它更容易记住:

git config -l

它将列出所有有用的信息,例如:

user.name=Your Name
user.email=your.name@notexisting.com
core.autocrlf=input
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
remote.origin.url=https://github.com/mapstruct/mapstruct-examples
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master

解决方案11:

huntsbot.com高效搞钱,一站式跟进超10+任务平台外包需求

我永远记不住 Git 命令的所有参数,所以我只是在 ~/.gitconfig 文件中放了一个对我来说更有意义的别名,这样我就可以记住它,这样可以减少输入:

[alias]
url = ls-remote --get-url

重新加载终端后,您只需键入:

> git url

这里还有一些我经常使用的:

[alias]
cd = checkout
ls = branch
lsr = branch --remote
lst = describe --tags

我还强烈推荐 git-extras,它有一个 git info command,它提供了有关远程和本地分支的更详细的信息。

不错的别名,我喜欢它们与 bash 命令自然融合的方式。我可以看到这在 bash 和 git 之间切换时造成的心理摩擦最小。太棒了!

原文链接:https://www.huntsbot.com/qa/Zv7v/how-to-determine-the-url-that-a-local-git-repository-was-originally-cloned-from?lang=zh_CN

保持自己快人一步,享受全网独家提供的一站式外包任务、远程工作、创意产品订阅服务–huntsbot.com