Git浅表克隆:仅活动持续最近X个月的分支

有一个长期运行的项目存储库,它比我想要或需要的要大得多。我浅克隆了最近几个月的克隆,但没有使用--no-single-branch,因此我的本地存储区仅了解origin/master,并且无法签出任何其他分支。

我知道可以从How do I "undo" a --single-branch clone?获得ALL branches或添加one at a time

ALl包含数十个我不需要了解的分支,并且下载了太多MB。一次1有点痛苦。

我的问题是,如何添加最近 x 个月(或 x * 100次提交)中所有活动的分支-跳过其他所有内容?

How can I get a list of Git branches,ordered by most recent commit?按日期对分支进行排序,但不适用于浅克隆。有什么方法可以从GitHub本身而不是git本身获取此列表吗? (因为这似乎需要下载所有内容。)

cj1987fdsgsg 回答:Git浅表克隆:仅活动持续最近X个月的分支

从根本上说, Git 不知道提交的时间,除非Git本身具有提交:提交和提交者的两个日期和时间标记是提交的一部分。

这意味着基于提交者时间戳的任何排序或选择都要求您具有提交。因此,您需要将要馈入排序算法的每个分支的每个尖端提交信息按日期进行排序,或馈入选择器。

个其他选项是获取其他一些Git(已经具有这些提交)或系统来为您进行排序或选择,或者交出日期戳(带或不带其余的提交)。标准Git并没有内置任何东西来获得比整个提交要少的值, 1 ,但是各种提供程序都有可以用来获取日期戳的API。要使用这些功能,您必须适当地退出Git。 (您的问题仅被标记为;添加以获得特定于GitHub的答案,或者因为答案在其中而只需浏览their API ...)


1 Git开发人员称其为“承诺包”。他们还没有准备好黄金时段。

,

这是一项黑客工作,它演示了一个因为不使用API​​而不应该这样做的原因。但是,您不需要API密钥,因此任何人都可以使用该咒语。

如果您对Github确定的 active 的含义感到满意,则:

打击壳

curl https://github.com/raspberrypi/linux/branches/active > branches-active.html
grep 'data-branch-name' branches-active.html | sed -r 's/^.*data-branch-name="(.*?)"(.*$)/git remote set-branches --add origin \1/'

发射:

git remote set-branches --add origin rpi-5.4.y
git remote set-branches --add origin rpi-5.3.y
git remote set-branches --add origin legacy_screen_blanking_update
git remote set-branches --add origin rpi-5.2.y
git remote set-branches --add origin rpi-4.19.y-rt
git remote set-branches --add origin rpi-5.1.y
git remote set-branches --add origin rpi-5.0.y
git remote set-branches --add origin rpi-4.20.y
git remote set-branches --add origin avs2
git remote set-branches --add origin rpi-4.14.y-rt

如果要从最近的提交日期起进行微调:

grep 'time-ago' branches-active.html | sed -r 's/^.*datetime="(....-..-..).*$/\1/'

2019-11-05
2019-10-28
2019-10-28
2019-10-28
2019-09-16
2019-09-23
2019-09-23
2019-09-23
2019-09-05
2019-05-28

天真脚本(硬编码,无参数)证明了这一点:
https://gist.github.com/maphew/1b706e66e87919dbd2538f21b6ea9f26

来源:

本文链接:https://www.f2er.com/3163248.html

大家都在问