GitHub GUI 允许我将 zip 文件上传到存储库,但不允许我提取它。
我可以直接上传文件(未存档),但问题是有些文件是目录,而 GitHub GUI 不允许上传目录。
有没有办法从命令行解决这个问题?
答案1
你不能在 GitHub 中解压 zip 文件。因为它是一个服务器贮存没有计算服务,除非您使用 GitHub行动[超出主题]。
你能上传目录和文件没有任何问题(递归),只要您添加它们
github add .
- 点.
是该目录中的所有内容。如果您从 GitHub 下载 zip 文件[评论]
github clone
,然后解压它,这是在您的计算机 [计算引擎、CPU] 中完成的:在您的目录中执行以下操作:git init git add . git commit -m "first commit"
git init
启动 git 并创建一个名为.git
.git add .
选择所有要提交的内容,包括文件夹、文件等一切。git commit -m
就是用一条消息保存该提交。
git add origin master url_from_github_repository git push origin master
add
就是告诉git添加远程地址[url-server]。origin
是远程地址的名称[快捷方式],可以是任何内容,因此您不必键入网址每次[www.github.com/user/repo]。master
是分支机构的名称;您可以有许多分支,但master
通常是您进行更改的分支。git push
是将您的提交[所有内容]上传到 GitHub.com 中的存储库[服务器]。
最后
第三方提供了另一项服务,用于将大文件 [图像、视频、psd] 上传到他们的服务器并持续跟踪这些文件的更改 [git],但是不是 上传到 GitHub.com。名字是git lfs
。这是另一个使用git的程序,你需要先安装它。
git 大文件存储
答案2
我是这个项目的作者: https://unzipgit.github.io
解释:
Github 没有提供在存储库中解压存档的选项,但有一个解决方案。可以使用 Github API 解决该问题(https://docs.github.com/en/rest/repos/contents)。他们的 API 允许您将文件上传到存储库。当然,如果我们发送存档,存档将被上传,但如果我们解析存档并循环遍历它,我们可以将每个文件发送到其自己的存储库。
以我个人的经验,我也遇到过这个问题。事实证明,自从 Github 创建以来,解决方案就一直在等待。正如通常发生的那样,与其等待大公司实施某些事情,不如自己做更容易。
如果我们谈论 JavaScript,我们可以使用 JSZip 获取 ZIP 存档的内容(https://stuk.github.io/jszip/)。令我惊讶的是,这是一个非常方便的库(特别感谢文件读取模式的选择)。如果我们非常简化它,那么上传档案看起来像这样:
// reading the archive
zipFile = await zip.loadAsync(inputArchive, { binary: true });
// loop
for (const [p,f] of Object.entries(zipFile.files)) {
// read as base64
base64file = await f.async("base64");
// upload to github
await reqest("PUT",`${url}/${fileName}`,{content: base64file});
}
您可以自己实现这个或使用我为自己制作的解决方案。逻辑和我已经说过的一样。为了方便起见,我实现了从计算机发送存档或选择存储库中已有存档的功能。在这两种情况下,浏览器都会加载存档并遍历它,将每个文件发送到存储库。