有什么方法可以获取历史记录仅返回到指定引用的 git 分支吗?

问题描述 投票:0回答:1

我有一些非常长寿的 git 基础分支,这些分支可以追溯到几年前,有数以万计的提交,创建了千兆字节的数据,然后随着时间的推移被删除。我正在尝试优化我们现有的 Github Actions 工作流程,该工作流程会自动重新调整某些开放 PR 功能分支的基础,以响应这些长期存在的分支中的更改。随着时间的推移,基础分支变得越来越重,这些工作流程的运行时间越来越长,这主要是因为必须下载并重播这个漫长的获取历史记录。

我认为,如果长寿分支的

git fetch
更浅的话,它的速度可能会快很多。遗憾的是,获取不能只用于 latest 提交,因为我需要分支中的“足够”历史记录才能对功能分支进行变基。而且我无法设置固定浅深度,因为我们的特征分支可以任意长期存在。 那么,我的目标是找到一种方法,将“足够远”提取到

base

feature
分支的历史记录中,以便进行必要的本地提交,以便将一个分支与另一个分支重新建立基础。
假设对于一个分支 

base

,以及一组分支

feature-1
feature-N
,我已经有一个分支
nca
,其尖端指向 {
base
feature-1
,最近的共同祖先,
feature-2
,...,
feature-N
}。 (我已经修改了 Github Actions 工作流程来计算并推送这样的分支。)
我们还假设我可以在工作流程开始时有效地获取此提示参考(例如使用

git ls-remote

)。

鉴于我有这个引用,有没有什么方法可以使用该引用来获取 

git fetch

来给我一个“浅获取”——其中获取将被限制为每个分支所需的任何深度,而不是固定的深度获得对从引用到分支尖端的提交历史“片段”的本地访问?类似于

git fetch --shallow-since=[date]
,但用参考而不是日期?
    

git
1个回答
0
投票

date -d "$(git show -s --format=%ci 93ddecac427bc01568b6eee7ba31c02d37e3f066)" +%s

然后,您可以将此结果嵌入到您的shallow-since fetch中,或者将其保存到变量中并以这种方式嵌入,具体取决于您的偏好。

© www.soinside.com 2019 - 2024. All rights reserved.