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

我几天前从 GitHub 提取了一个项目。从那以后,我发现 GitHub 上有多个分支,而我却忽略了我最初选的那个分支。如何确定我拉了哪些叉子?

答案

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

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

如果您出于脚本目的需要这样做,则只能使用

git config --get remote.origin.url

你可以试试:

git remote -v

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

获得答案:

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

这比阅读配置要好。请参考git-ls-remote手册页

--get-url

考虑到任何"url.<base>.insteadOf"配置设置(请参阅git-config(1) ),展开给定远程存储库的 URL,然后退出而不与远程对话。

正如 @Jefromi 指出的那样,此选项已在v1.7.5中添加,直到v1.7.12.2 (2012-09)才被记录

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

git remote get-url origin

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

参见Ben mathstufmathstuf )的 commit 96f78d3 (2015 年 9 月 16 日
(由Junio C gitster - gitstercommit e437cbd 中合并 ,2015 年 10 月 5 日)

远程:添加 get-url 子命令

insteadOf扩展是ls-remote --url的一部分,也没有办法扩展pushInsteadOf
添加get-url子命令,以便能够同时查询和获取所有已配置 URL 的方式。

get-url:

检索遥控器的 URL。
在此扩展了insteadOfpushInsteadOf配置。
默认情况下,仅列出第一个 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]

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

(以下是针对官方 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/configremote["origin"]下找到它。

简短答案:

$ 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指出这一点。

对我来说,这是更简单的方法(无需输入):

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

实际上,我将其放入名为salias ,该alias可以:

git remote -v
git status

您可以使用以下方式将其添加到个人资料: alias s='git remote -v && git status'

我永远无法记住 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 命令 ,该命令提供有关远程和本地分支的更多详细信息。