447

有没有办法在决定克隆之前查看 GitHub 上的 Git 存储库有多大?

这似乎是一个非常明显/基本的统计数据,但我根本找不到如何在 GitHub 上看到它。

4

11 回答 11

358

有一种方法可以通过GitHub API访问这些信息。

检索有关存储库的信息时,命名属性size的值是整个存储库(包括其所有历史记录)的大小,以千字节为单位。

例如,Git 存储库的重量约为 124 MB。返回的 JSON 有效负载的size属性值为124283

更新

根据服务器端裸存储库的磁盘使用情况,该大小确实以千字节为单位。但是,为了避免在具有大型网络的存储库中浪费太多空间,GitHub 依赖于Git Alternates。在此配置中,针对裸存储库计算磁盘使用情况不考虑共享对象存储,因此通过 API 调用返回“不完整”值。

此信息由 GitHub 支持提供。

于 2011-12-30T12:47:54.933 回答
181

如果您拥有存储库,您可以通过打开帐户设置存储库( https://github.com/settings/repositories ) 找到确切的大小,存储库大小显示在其名称旁边。

如果您不拥有该存储库,则可以对其进行 fork,然后在同一位置进行检查。

注意:您可能是托管多个存储库的组织的所有者,但在组织内的特定存储库中没有角色。默认情况下,即使您在自己拥有的组织中创建存储库,您也不会添加到存储库中,因此不会在settings/repositories. 因此,将自己添加到存储库 Setting( https://github.com/org-name/repo-name/settings) 中即可查看https://github.com/settings/repositories

有点hacky:使用download as a zip file选项,读取指示的文件大小,然后取消它。

我不记得以 zip 格式下载是否有效,但无论如何,现在这样做只会下载当前选择的没有历史记录的分支。

于 2012-06-19T02:55:09.110 回答
103

如果您使用 Google Chrome 浏览器,您可以安装GitHub Repository Size扩展。

在此处输入图像描述

在这里回购:https ://github.com/harshjv/github-repo-size

于 2017-02-07T15:30:50.523 回答
34

@larowlan 很棒的示例代码。使用新的 GitHub API V3,需要更新 curl 语句。此外,不再需要登录:

curl https://api.github.com/repos/$2/$3 2> /dev/null | grep size | tr -dc '[:digit:]'

例如:

curl https://api.github.com/repos/dotnet/roslyn 2> /dev/null | grep size | tr -dc '[:digit:]'

返回931668(以 KB 为单位),几乎是一个 GB。

私有仓库需要身份验证。一种方法是使用 GitHub 个人访问令牌:

curl -u myusername:$PERSONAL_ACCESS_TOKEN https://api.github.com/repos/$2/$3 2> /dev/null | grep size | tr -dc '[:digit:]'
于 2013-09-23T23:11:19.613 回答
14

如果您试图找出自己的存储库的大小。

您所要做的就是转到 GitHub 设置存储库,您可以在浏览器中看到所有尺寸,无需额外工作。

https://github.com/settings/repositories

于 2021-02-13T00:09:44.070 回答
11

使用 curl (sudo apt-get curl) 和 json pretty (sudo gem install jsonpretty json) 做到这一点:

curl -u "YOURGITHUBUSERNAME" http://github.com/api/v2/json/repos/show/OWNER/REPOSITORY |
  jsonpretty

将 YOURGITHUBUSERNAME 替换为您的 GitHub 用户名(如图)。

将 OWNER 替换为存储库所有者的 Git 用户名。将 REPOSITORY 替换为存储库名称。

或者作为一个不错的 Bash 脚本(将其粘贴到名为 gitrepo-info 的文件中):

#!/bin/bash
if [ $# -ne 3 ]
then
  echo "Usage: gitrepo-info <username> <owner> <repo>"
  exit 65
fi
curl -u "$1" http://github.com/api/v2/json/repos/show/$2/$3|jsonpretty

像这样使用它:

gitrepo-info larowlan pisi reel

这将为我提供有关 GitHub上的pisi/reel存储库的信息。

于 2012-03-07T23:41:02.050 回答
11

从浏览器使用 JavaScript,因为Github API启用了CORS

fetch('https://api.github.com/repos/webdev23/source_control_sentry')
  .then(v => v.json()).then((v) => {
     console.log(v['size'] + 'KB')
  }
)

于 2020-11-05T09:10:50.987 回答
3

您需要遵循 GitHub API。有关您的存储库的所有详细信息,请参阅此处的文档。它要求您发出GET请求:

获取 /repos/:owner/:repository

您需要更换两件事:

  1. :owner - 拥有仓库的人的用户名
  2. :repository - 存储库的名称

例如,我的用户名maheshmnj,我拥有一个存储库,flutter-ui-nice,所以我的 GET URL 将是:

https://api.github.com/repos/maheshmnj/flutter-ui-nice

在发出 GET 请求时,您将被一些 JSON 数据淹没,并且可能在第 78 行,您应该看到一个名为size的键,它将返回存储库的大小。

提示:使用 JSON 时,我建议您添加一个格式化 JSON 数据的插件,以便轻松读取 JSON。安装插件

于 2019-03-04T13:14:07.843 回答
2

对于私有存储库,您需要从https://github.com/settings/tokens获取个人访问令牌。

然后使用以下 curl 命令获取详细信息(替换为 [token]、[owner] 和 [name] 的值):

curl -u git:[token] https://api.github.com/repos/[owner]/[name] 2> /dev/null | grep size

如前所述,大小可能以 MB 或 KB 为单位。

于 2019-12-03T16:03:57.573 回答
2

你可以使用 Github API

这是 Python 示例:

import requests


if __name__ == '__main__':
    base_api_url = 'https://api.github.com/repos'
    git_repository_url = 'https://github.com/garysieling/wikipedia-categorization.git'

    github_username, repository_name = git_repository_url[:-4].split('/')[-2:]  # garysieling and wikipedia-categorization
    res = requests.get(f'{base_api_url}/{github_username}/{repository_name}')
    repository_size = res.json().get('size')
    print(repository_size)
于 2020-11-11T16:00:37.430 回答
1

总结@larowlan、@VMTrooper 和@vahid chakoshy 解决方案:

#!/usr/bin/env bash


if [ "$#" -eq 2 ]; then
    echo "$(echo "scale=2; $(curl https://api.github.com/repos/$1/$2 2>/dev/null \
    | grep size | head -1 | tr -dc '[:digit:]') / 1024" | bc)MB"
elif [ "$#" -eq 3 ] && [ "$1" == "-z" ]; then
    # For some reason Content-Length header is returned only on second try
    curl -I https://codeload.github.com/$2/$3/zip/master &>/dev/null  
    echo "$(echo "scale=2; $(curl -I https://codeload.github.com/$2/$3/zip/master \
    2>/dev/null | grep Content-Length | cut -d' ' -f2 | tr -d '\r') / 1024 / 1024" \
    | bc)MB"
else
    printf "Usage: $(basename $0) [-z] OWNER REPO\n\n"
    printf "Get github repository size or, optionally [-z], the size of the zipped\n"
    printf "master branch (`Download ZIP` link on repo page).\n"
    exit 1
fi
于 2015-05-27T23:20:15.543 回答