git - git - 尽管没有使用“--single-branch”克隆存储库,但仍从特定分支获取
问题描述
长话短说,我正在寻找的是能够仅获取本地存储库中的特定分支,即使该存储库最初不是用“--single-branch -branch <branch_name>”克隆的.
分享完整的故事 - 我们想使用浅克隆来减少一般的 git 运行时间,特别是在我们的自定义 CI 工具中。另外我应该声明我们使用 Android 的“repo”工具。
据我了解,我们首先需要使用 Android 的“repo”工具支持的 --depth=1 克隆 git 存储库,但这对于我们的 CI 工具来说还不够,它需要加深获取以便能够从用户的存储库中提取更新时,有一个共同的 git 历史记录。因此,当我们尝试加深 fetch(为简单起见 - “git fetch --deepen=1”)时,git 会获取所有分支和标签,并花费大量运行时间这样做,尽管我们只需要加深 fetch 一次非常具体的分支。
如果 git 存储库最初是使用“--single-branch -branch”(除了--depth=1)克隆的,然后“git fetch --deepen=1”运行速度超快,则可以解决此问题。但问题是,Android 的“repo”工具似乎不支持使用“--single-branch -branch”克隆 git repos,因此我的问题在顶部。或者,如果有另一种方法可以加深对特定分支的获取 - 我很高兴知道细节。
谢谢!
解决方案
该git remote
命令具有面向用户的工具,用于转换为单分支克隆设置或从单分支克隆设置转换。具体参见set-branches
子命令。
除此之外,您始终可以git fetch
直接运行,同时传入--depth
一个或多个 refspec。单分支做的唯一一件事就是自动化 refspec。
您最好的选择可能仍然是首先修改repo
您正在使用的工具(至少是可选的)--single-branch
,因为您说使用此选项每次获取都可以节省大量资金。这将为您在初始获取时节省相同的成本(请记住,克隆包括git init
在新的空目录中运行,根据需要配置各种其他 Git 命令,然后是git fetch
and git checkout
)。请注意,可以使用该选项或通过列出两个分支git remote
将单分支克隆转换为“双分支克隆”(原样) 。--add
推荐阅读
- google-apps-script - 谷歌表格脚本:搜索任何有错误的单元格
- angular - 无法在 Angular 上获取 API 数据
- c - 使用 getchar 从文件中读取字符串
- excel - 根据其他单元格值合并和汇总重复值
- reactjs - 当状态变量发生变化时,铯折线不渲染
- python - 打印列表的一个元素(比如说 3 行和 2 行,二维列表)。我做错了什么?对于蟒蛇
- r - *仅更改数字字体*
- javascript - 向数据库提交字符串值返回错误
- batch-file - 使批处理文件只能在特定位置运行
- python - 带有 Flask 的 AJAX POST 请求返回方法不允许错误