如何在不克隆的情况下从GitHub复制文件?

5

在GitHub上存在一个公共代码库。我在自己的机器上打开了一个空目录的终端,我想用该代码库中特定分支所表示的一组文件填充该目录。

我只需要构成给定分支最新提交的文件集。我不需要任何历史记录或修订元数据。使用git clone克隆代码库或在本地创建Git代码库会浪费带宽、计算资源和存储空间。我觉得应该有一个命令可以让我下载这组文件:

$ git {something} https://github.com/OrgName/RepoName.git branchname

將這些檔案複製到目前的目錄中。我已經找了好幾個小時,一無所獲。每次網路搜尋都有太多「git clone」的雜音。
這可能嗎?如果可能的話,可以在不驗證 GitHub 的情況下完成嗎?

这个仓库有没有“发布版本”?通常你可以下载一个特定版本的代码压缩包。 - Code-Apprentice
3个回答

4

我认为只有以下解决方案:

   git clone -b branchname --depth 1 --single-branch https://github.com/OrgName/RepoName.git \
&& rm -rf RepoName/.git/

它会克隆单个分支(-b 分支名 --single-branch),仅获取最后一次提交(--depth = 1),然后删除.git文件夹。


3

有几种方法可以获取单个修订版本。

首先,在GitHub上,有API端点可用于下载特定修订版本的tarballzip文件。它们可以使用curl下载,并且仅在存储库为私有时需要身份验证。

如果存储库具有包含要下载的特定tarball或其他归档的发布资源,则可以首先查找发布,然后下载所需资产。如果发布包含生成的文件或其他不会出现在自动生成的tarballs中的内容,则此方法很有帮助。

你也可以选择进行浅克隆。也就是说,你可以在git clone命令中传递--depth 1选项,仅下载一个版本的数据,并使用-b BRANCH选项指定分支。这将得到一个.git目录,如果需要,可以删除该目录,或者可以使用git archive HEAD从中生成归档文件。

压缩包下载似乎是最好的答案,我可以确认它有效。对于其他遇到同样问题的用户,我要注意一下,压缩包会将文件集提取到一个名为{repo}-{branch}/的临时文件夹中,因此您需要手动将仓库文件从该文件夹移动到当前文件夹。尽管如此,这可能是最接近解决方案了。 - Darien Marks

1
你可以直接下载它。
wget https://github.com/OrgName/RepoName/archive/refs/heads/branchname.zip

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接