任务:
要在回购协议上执行git bisect
,比如https://example.git
,二等分范围的两端都非常旧:例如:za3bca
(较新)和fabce1
(较旧)。
由于带宽有限,我不想下载所有的提交,直到最新的范围结束,因为我知道我肯定不需要它们。
我的方法:
因此,正如git文档页面上给出的git clone
,我想同时使用这两个选项:--depth <depth>
和--shallow-since=<date>
组合在一起。
- 我将指定范围中较早结束的日期,例如
20220212
(yyyymmdd), - 我有counted the number of commits在这个范围之间(比如
100
),并且将提供更多的值作为“depth”
git clone https://example.git --shallow-since=20220212 --depth 100
但这样做会产生错误:fatal: error processing shallow info: 4
2条答案
按热度按时间szqfcxe21#
两件事:首先,你的
--shallow-since
datespec解析不正确,尝试2022-02-12
。但是这仍然不能达到你的目的,因为
--depth
和--shallow-since
都指定了从被 checkout 的引用(远程的主分支HEAD
,如果没有指定的话)到 * 后退 * 的距离,你不能用--depth
来指定从--shallow-since
找到的提交到 * 前进 * 的距离。如果有一个标签或分支头位于或接近平分范围的末端,可以将其作为ref,使用
--branch
选项 checkout (不管名称如何,它都接受分支和标签):如果没有,那么我不认为你能做什么,除了说服别人为你做这样的标签或分支:)
iaqfqrcu2#
最直接的方法是在服务器端标记你要开始的tips,然后用
--shallow-since
来获取它们。现在很多服务器都配置成允许你获取任意可达的(甚至是不可达的)提交,特别是为了迎合这种节省比特的冲动,所以如果标记它们很烦人,你可以试着查找它们并显式地指定开始提交: