git - 从特定分支获取,尽管存储库未使用“--single-branch”克隆

git - fetching from a specific branch although repository wasn't cloned with '--single-branch'

长话短说,我正在寻找的是能够只获取本地存储库中的特定分支,即使这个存储库最初不是用“--single-branch -分支 ".

要分享完整的故事 - 我们希望使用浅克隆来减少 git 运行 一般时间,特别是在我们的自定义 CI 工具中。另外我应该声明我们使用 Android 的“repo”工具。

据我了解,我们首先需要使用 --depth=1 克隆 git 存储库,Android 的“repo”工具支持它,但这并不完全对于我们的 CI 工具来说已经足够了,该工具需要加深获取,以便在从用户的存储库中提取更新时能够拥有共同的 git 历史记录。因此,当我们尝试加深获取时(为简单起见 - “git fetch --deepen=1”)然后 git 获取所有分支和标签并花费大量 运行 时间做所以,尽管我们只需要加深对特定分支的提取。

如果 git 存储库最初是使用“--single-branch -branch”(除 --depth=1 之外)然后“git fetch -- deepen=1" 运行s 超快。但问题是 Android 的“回购”工具似乎不支持使用“--single-branch -branch”克隆 git 回购,因此我的问题在顶部。或者,如果有另一种方法可以加深对特定分支的提取 - 我很乐意知道详细信息。

谢谢!

git remote 命令具有面向用户的工具,用于转换为单分支克隆设置或从单分支克隆设置转换。具体参见 set-branches 子命令。

除此之外,您始终可以直接 运行 git fetch,传入 --depth 一个或多个 refspec。单分支所做的唯一一件事就是自动执行 refspec。

你最好的选择可能仍然是修改你正在使用的 repo 工具(至少是可选的)首先使用 --single-branch 因为你说你每次获取都可以节省大量费用有了这个选项。这将为您在初始获取时节省相同的费用(请记住,克隆包括在新的空目录中 运行ning git init,根据需要配置的各种其他 Git 命令,然后 git fetchgit checkout)。请注意,git remote 可以使用 --add 选项或通过列出两个分支将单分支克隆转换为“双分支克隆”(可以说是)。