【问题标题】:How to download .zip from GitHub for a particular commit sha?如何从 GitHub 下载 .zip 以获取特定的提交 sha?
【发布时间】:2012-11-18 03:54:19
【问题描述】:

我想下载一个 .zip,其中包含托管在 github 上的库的源代码,但我不想要 master,因为每次下载时我都可能下载不同的版本。

这个特定的库没有标签,所以我不能使用它。

那么如何下载特定提交 sha 的 source.zip?

【问题讨论】:

  • 这个不需要用php或者composer-php来标记吧?

标签: git github


【解决方案1】:

你可以把你想要的sha放在下载地址里:

https://github.com/{username}/{projectname}/archive/{sha}.zip

作为一般规则,如果您有一个有效的 url,您可以将“master”替换为您想要的特定 sha。

在 unix 上:

wget https://github.com/{username}/{projectname}/archive/{sha}.zip

请记住,如果这是一个私有仓库,那么 wget 将无法工作,除非您也传递 OAuth 令牌。

这里有更多信息:

Having trouble downloading Git archive tarballs from Private Repo

【讨论】:

  • 没想到会采用这种(酷)方式。期待 git 命令 ;)
  • 也检查此链接 - 可能正在寻找此链接 stackoverflow.com/a/48503019/341117
  • 你也可以用短沙!
  • 即使我使用wget -O 重命名存档 ZIP 文件,解压缩后我也会得到一个丑陋的 SHA1 目录名。有什么办法可以避免这种情况?
【解决方案2】:

查看提交代码时,点击右上角的“Browse Code”按钮,然后点击“Download ZIP”。

【讨论】:

  • 他们现在有一个“克隆或下载”按钮,您可以在其中“下载 ZIP”。
  • “克隆或下载”是取代旧的“克隆”和“下载”按钮的新按钮。新按钮不执行特定版本 - 使用 Zeki 描述的方式
  • 这在 2017 年 2 月对我有用。它确实在所选提交的时间戳下载了带有更改的 repo。
【解决方案3】:

这是一个老问题,但想提一下,如果您只想将提交作为一个补丁,而不是提交时的整个 repo,您​​可以使用:

$ wget http://github.com/username/repo/commit/sha1.patch
#                        ^^^^^^^^ ^^^^        ^^^^
#                        change   change      change

/commit.patch 部分是重要部分。

如果您想合并前一段时间被撤销的更改,因此这在分叉的存储库中不存在时特别有用。

【讨论】:

    【解决方案4】:

    对于那些来这里寻找从特定提交(或分支)下载特定文件(或目录)的方法的人:

    git_user="user-name"
    git_project="project-name"
    commit_or_branch="sha-id or branch name"
    dir_or_file="path/to/dir-or-file"
    
    archive_url="https://github.com/${git_user}/${git_project}/archive/${commit_or_branch}.tar.gz"
    
    wget -O - ${archive_url} | tar xz --strip=1 "${git_project}-${commit_or_branch}/${dir_or_file}"
    

    将压缩包下载为tar.gz 的好处是,您可以直接将wget 导入到tar 命令中,因此它会解压缩文件上的gz飞

    【讨论】:

    • 浪费。文件可以直接下载,子目录可以通过github的SVN接口下载,见stackoverflow.com/questions/7106012/…
    • @MilaNautikus 您使用svn 的链接- 需要先安装SVN,而wget 已经在大多数平台上可用。与其投反对票,不如发布一个有用的答案。
    猜你喜欢
    • 1970-01-01
    • 2011-09-01
    • 2021-12-03
    • 1970-01-01
    • 2011-12-11
    • 2021-09-04
    • 1970-01-01
    • 1970-01-01
    • 2021-11-11
    相关资源
    最近更新 更多