1

有一个长期运行的项目存储库,它比我想要或需要的要大得多。最近几个月我浅克隆但没有使用--no-single-branch,所以我的本地仓库只知道origin/master并且我无法检查任何其他分支。

我如何“撤消”--single-branch 克隆?我知道我可以获得所有分支,或者一次添加一个

ALL 包括几十个我不需要知道的分支,并且下载了太多 MB。一次1个有点痛。

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

如何获取按最近提交排序的 Git 分支列表?按日期对分支进行排序,但不适用于浅克隆。有没有办法从 GitHub 而不是从 git 本身获取这个列表?(因为这似乎需要下载所有内容。)

4

2 回答 2

1

从根本上说,除非Git本身有提交,否则 Git 不知道何时提交:作者和提交者的两个日期和时间戳是提交的一部分。

这意味着任何基于提交者时间戳的排序或选择都需要你有提交。因此,您需要获取您打算输入排序算法以按日期排序或输入选择器的每个分支的每个提示提交。

唯一的其他选择是获取其他一些 Git(已经有这些提交)或系统来为您进行排序或选择,或者交出日期戳(有或没有提交的其余部分)。标准 Git 内置的任何内容都不能少于整个提交,1但各种提供商都有 API,您可以通过这些 API 获取日期戳。要使用这些,您必须正确地跳出 Git。(您的问题仅被标记为;添加以获取 GitHub 特定的答案,或者只是浏览他们的 API,因为答案就在那里......)


1通过 Git 开发人员所说的“promisor packs”,有一些工作正在进行中。不过,他们还没有准备好迎接黄金时段。

于 2019-11-04T23:09:16.417 回答
0

这是一个 hack 工作,演示了一个不应该做的事情,因为它不使用 API。但是,有了这个,您不需要 API 密钥,因此任何人都可以使用该咒语。

如果您对Github 确定的active表示满意:

bash 外壳

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

资料来源:

于 2019-11-05T22:16:53.827 回答