【问题标题】:Checkout branch from Github without cloning whole repo, and without Git从 Github 签出分支,无需克隆整个 repo,也无需 Git
【发布时间】:2013-12-27 07:09:27
【问题描述】:

我经常构建服务器,其目标是安装一些存储在 Github 中的软件。流程如下:

  1. 安装 Git。
  2. 克隆 Github 存储库。
  3. 检查右分支。

第 1 步和第 2 步可能会很慢(几分钟)。是否有任何工具可以让我切入正题,第 3 步?我在想这样的事情:

  1. 获取 gitcheckout 工具(bash 脚本)
  2. 直接从 Github 右侧分支拉取相关文件。

【问题讨论】:

  • Github 以 zip 文件的形式提供分支下载。这就是你要找的东西吗?
  • 您可以使用 wget 拉下整个存储库的 zip,但您无法下载单个部分,因此对于大多数项目,您最终会下载大量额外数据(不需要的分支等)

标签: git bash github automation git-checkout


【解决方案1】:

如果你想使用 git 并且你的 git 足够新,可以拥有--single-branch

git clone --single-branch --branch=<branch> --depth=1

否则,您可以以 zip 格式下载源代码:

wget https://github.com/<user>/<project>/archive/<branch>.zip

【讨论】:

  • 完美——我不知道你可以做这两件事。我似乎记得曾经寻找过“--single-branch”的等价物,当时它肯定不存在。
  • 在对两者进行了一些试验之后,wget 速度更快,但可能的缺点是您根本不会得到一个 git 存储库——这可能是其他脚本等所期望的。
【解决方案2】:

curl 或 wget:

curl -o foo.zip https://github.com/<user>/<project>/archive/<branch>.zip
wget https://github.com/<user>/<project>/archive/<branch>.zip

也就是说,根据我的经验,安装 git 只需要几秒钟

【讨论】:

    【解决方案3】:
    1. 您可以使用 GitHub API 获取一个 tarball,然后您可以获取一个分支并一次性提取它:

      curl -u USER:TOKEN https://api.github.com/repos/USER/REPO/tarball/BRANCH -L | tar zt
      

      您可以按照this page 上的步骤创建您的令牌。 这很容易做到。

    2. 或者你可以使用svn获得一个子目录:

      svn checkout https://github.com/USER/REPO/branches/BRANCH/subdir/you/want
      

    这两种解决方案的好处是它们不下载完整的历史记录,只下载最新状态的快照。

    【讨论】:

    • 非常酷——另外两个(不同的)解决方案。 SVN 非常狡猾——但它之所以有效,是因为 SVN 可能包含在比 Git 更多的发行版中。
    猜你喜欢
    • 2019-06-29
    • 2020-07-22
    • 1970-01-01
    • 2021-01-28
    • 1970-01-01
    • 2021-07-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多