如何有效地获取特定提交的 GitHub 存储库?

Mat*_*oli 6 git github

我正在尝试构建一个持续集成系统。每次推送到 GitHub 都会触发一次构建。

\n\n

每个构建都需要签出/下载其正在处理的提交的存储库。我正在尝试找到一种在大型存储库上不需要花费几分钟的方法(因为构建只需要几秒钟\xe2\x80\xa6)。

\n\n

请注意,我不想在构建之间存储数据(这消除了缓存的可能性)。

\n\n

我探索过的解决方案:

\n\n\n\n

我在 GitHub 上看到的所有其他解决方案都假设服务器上有最新的 git 版本,或者克隆存储库一次就可以了,但就我而言,情况并非如此。我的每个构建都从头开始(因为这是一个限制)。

\n\n

所以我在 GitHub 的具体情况下问:如何(以任何方式)下载特定提交的代码,以便能够在该提交上运行持续集成工具?

\n

lar*_*sks 8

您可以使用以下形式的 URL 从 GitHub 下载特定提交的存档:

https://github.com/PROJECT/REPO/archive/COMMITID.zip
Run Code Online (Sandbox Code Playgroud)

例如,如果我有一个名为“dockerize”的项目并且我想下载提交 ID,169532e我可以运行:

curl -OL https://github.com/larsks/dockerize/archive/169532e.zip
Run Code Online (Sandbox Code Playgroud)

我在这里使用了短提交 ID,但您可以使用长提交 ID、分支或标签等。

这将为我提供.zip包含该特定提交的文件的存档。顶级目录将被命名为PROJECT-LONGCOMMITID. 例如,上述命令将生成一个顶级目录为 的存档 dockerize-169532eba46757aca8002e1c9bb257079a739f75/README.md。

这只会让您获得该特定提交中的文件;它不会获取.git目录或任何存储库历史记录。