如何在克隆之前查看GitHub存储库的大小?
在我们决定是否要克隆GitHub存储库之前,有没有办法在GitHub上查看Git存储库的大小呢?
这似乎是一个非常明显/基本的统计数据,但我找不到在GitHub上如何查看它的方法。
解决方案
可以通过GitHub API访问此信息。
- API文档:GitHub API文档
- 用法:GET /repos/:user/:repo
- 示例:https://api.github.com/repos/git/git
在检索关于存储库的信息时,返回的JSON中的一个属性名为“size”,以千字节为单位表示整个存储库(包括其全部历史记录)的大小。
例如,Git存储库大小约为124MB。返回的JSON中的“size”属性的值为124283。
注:确实是以千字节的方式表示大小,基于服务器端裸存储库的磁盘使用情况。但是,为了避免在具有大网络的存储库中浪费太多空间,GitHub依赖于Git替代品(Git alternates)。在这种配置中,根据裸存储库计算磁盘使用量不会计算共享对象存储,从而通过API调用返回了一个“不完整”的值。这是GitHub支持提供的信息。
参考代码
想要查看示例代码,请点击下方链接:
参考代码:
bash
1curl -u "YOURGITHUBUSERNAME" https://api.github.com/repos/OWNER/REPOSITORY 2>/dev/null | grep size | tr -dc '[:digit:]'
将YOURGITHUBUSERNAME替换为您的GitHub用户名。 将OWNER替换为存储库所有者的Git用户名。 将REPOSITORY替换为存储库名称。
例如:
1curl -u "YOURGITHUBUSERNAME" https://api.github.com/repos/git/git 2>/dev/null | grep size | tr -dc '[:digit:]'
返回值为931668(以KB为单位),约等于1GB。
私有存储库需要进行身份验证。一种方法是使用GitHub个人访问令牌:
1curl -u "YOURGITHUBUSERNAME:$PERSONAL_ACCESS_TOKEN" https://api.github.com/repos/OWNER/REPOSITORY 2>/dev/null | grep size | tr -dc '[:digit:]'
将YOURGITHUBUSERNAME替换为您的GitHub用户名。 将PERSONAL_ACCESS_TOKEN替换为您的个人访问令牌。 将OWNER替换为存储库所有者的Git用户名。 将REPOSITORY替换为存储库名称。
Python
1import requests
2
3base_api_url = 'https://api.github.com/repos'
4github_username = 'YOUR_USERNAME' # 替换为您的GitHub用户名
5repository_name = 'REPO_NAME' # 替换为存储库名称
6
7res = requests.get(f'{base_api_url}/{github_username}/{repository_name}')
8repository_size = res.json().get('size')
9print(repository_size)
将YOUR_USERNAME替换为您的GitHub用户名。 将REPO_NAME替换为存储库名称。
JavaScript
1fetch('https://api.github.com/repos/OWNER/REPO')
2 .then(v => v.json())
3 .then((v) => {
4 console.log(v['size'] + 'KB');
5})
将OWNER替换为存储库所有者的Git用户名。 将REPO替换为存储库名称。
Bookmarklet
1javascript:(() => {
2 let url = new URL(document.location.href);
3 if (url.origin !== "https://github.com") {
4 return;
5 }
6 if (url.pathname === "/") {
7 return;
8 }
9 let p = url.pathname.slice(1, url.pathname.length);
10 let parts = p.split('/');
11 if (parts.length < 2) {
12 return;
13 }
14 let x = [parts[0], parts[1]].join('/');
15 fetch(`https://api.github.com/repos/${x}`)
16 .then(r => r.json())
17 .then((b) => alert(`${(b['size'] / 1000).toFixed(2)}mb (${b['size']}kb)`));
18})();
使用上面的脚本创建一个书签,将脚本粘贴到URL字段中。当浏览存储库时,单击此书签会弹出一个提示框,显示存储库的大小(以MB和KB为单位)。
GitHub CLI
1gh api repos/OWNER/REPO --jq '.size'
将OWNER替换为存储库所有者的Git用户名。 将REPO替换为存储库名称。
浏览器扩展
如果您使用Google Chrome浏览器,可以安装GitHub Repository Size扩展程序。
以上是关于在克隆之前查看GitHub存储库大小的详细说明。希望对您有所帮助!
相关文章推荐
- GitHub pull request 显示已经在目标分支中的提交
- 如何在克隆git仓库时删除已添加到.gitignore的目录
- Github 提示在按照屏幕上的说明进行操作和推送新仓库时要求输入用户名/密码
- 在GitHub上将公共仓库的fork变为私有仓库
- 如何解决Git Push出现"Repository not found"错误
- 从git/GitHub的历史记录中删除文件夹及其内容
- 如何判断存储项是否存在于GitHub远程仓库?
- Git中"git reset"和"git checkout"的区别
- git-diff基础教程
- 在Git中合并多个提交后再推送
- 使用Git,显示在一个分支中但不在其他分支中的所有提交
- 在Git中更改已推送的提交消息(前提是没有人从远程仓库拉取)
- 将composer.lock提交至版本控制吗?
- 如何在 Git 仓库中保留文件但不跟踪其变化
- 如何修改一个提交(不改变提交信息)?
- 撤销Git中的stash操作
- Git中从存储区(stash)中提取单个文件(或文件的更改)
- 如何从Git仓库中删除.DS_Store文件
- 使用Git递归更新子模块
- 在.gitignore 文件中可以使用注释