如何在 GitHub 存储库中提取 zip 文件?

如何在 GitHub 存储库中提取 zip 文件?

GitHub GUI 允许我将 zip 文件上传到存储库,但不允许我提取它。

我可以直接上传文件(未存档),但问题是有些文件是目录,而 GitHub GUI 不允许上传目录。

有没有办法从命令行解决这个问题?

答案1

  1. 不能在 GitHub 中解压 zip 文件。因为它是一个服务器贮存没有计算服务,除非您使用 GitHub行动[超出主题]。

  2. 上传目录和文件没有任何问题(递归),只要您添加它们github add .- 点.是该目录中的所有内容。

  3. 如果您从 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});
}

您可以自己实现这个或使用我为自己制作的解决方案。逻辑和我已经说过的一样。为了方便起见,我实现了从计算机发送存档或选择存储库中已有存档的功能。在这两种情况下,浏览器都会加载存档并遍历它,将每个文件发送到存储库。

相关内容