Git 浅克隆:最近 X 个月只有 activity 个分支
Git shallow clone: only branches with activity last X months
有一个很长的 运行 项目存储库,它比我想要或需要的要大得多。我在过去几个月进行了浅克隆,但没有使用 --no-single-branch
,所以我的本地存储库只知道 origin/master
,我无法检查任何其他分支。
来自 How do I "undo" a --single-branch clone? I know I can get ALL branches, or add one at a time.
ALL 包括几十个我不需要知道的分支并且下载了太多 MB。一次1个有点痛。
我的问题是,如何添加在过去 x 个月(或 x 中有 activity 的所有分支*100 次提交)——然后跳过其他一切?
How can I get a list of Git branches, ordered by most recent commit? 按日期对分支进行排序,但不适用于浅克隆。有没有办法从 GitHub 而不是 git 本身获取此列表? (因为这似乎需要下载所有内容。)
从根本上说,Git 不知道什么时候提交,除非 Git 有提交本身:两个日期和时间戳,对于作者和提交者,是提交的一部分。
这意味着任何基于提交者时间戳的排序或选择都需要您有提交。因此,您需要获取您打算输入排序算法以按日期排序或输入选择器的每个分支的每个提示提交。
你的只有其他选择是让其他Git——已经有那些提交——或系统为你做排序或选择,或者交给在日期戳上(有或没有提交的其余部分)。标准 Git 中没有内置任何东西来获取少于整个提交的内容,1 但是各种提供者都有 API,您可以通过这些 API 获取日期戳。要使用它们,您必须走出 Git 适当的范围。 (你的问题只被标记为 git; add github to get GitHub-specific answers, or just go browse their API 因为答案就在那里...)
1Git 开发人员称 "promisor packs" 正在开发一些东西。不过,他们还没有准备好迎接黄金时段。
这是一项黑客工作,演示了 不应该 怎么做,因为它不使用 API。但是有了这个你就不需要 API 钥匙所以任何人都可以使用这个咒语。
如果您对 active 的含义感到满意,由 Github 确定:
bash shell
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 /'
发出:
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="(....-..-..).*$//'
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
来源:
- @jahrichie 在
- 正则表达式调整:https://regexr.com/
有一个很长的 运行 项目存储库,它比我想要或需要的要大得多。我在过去几个月进行了浅克隆,但没有使用 --no-single-branch
,所以我的本地存储库只知道 origin/master
,我无法检查任何其他分支。
来自 How do I "undo" a --single-branch clone? I know I can get ALL branches, or add one at a time.
ALL 包括几十个我不需要知道的分支并且下载了太多 MB。一次1个有点痛。
我的问题是,如何添加在过去 x 个月(或 x 中有 activity 的所有分支*100 次提交)——然后跳过其他一切?
How can I get a list of Git branches, ordered by most recent commit? 按日期对分支进行排序,但不适用于浅克隆。有没有办法从 GitHub 而不是 git 本身获取此列表? (因为这似乎需要下载所有内容。)
从根本上说,Git 不知道什么时候提交,除非 Git 有提交本身:两个日期和时间戳,对于作者和提交者,是提交的一部分。
这意味着任何基于提交者时间戳的排序或选择都需要您有提交。因此,您需要获取您打算输入排序算法以按日期排序或输入选择器的每个分支的每个提示提交。
你的只有其他选择是让其他Git——已经有那些提交——或系统为你做排序或选择,或者交给在日期戳上(有或没有提交的其余部分)。标准 Git 中没有内置任何东西来获取少于整个提交的内容,1 但是各种提供者都有 API,您可以通过这些 API 获取日期戳。要使用它们,您必须走出 Git 适当的范围。 (你的问题只被标记为 git; add github to get GitHub-specific answers, or just go browse their API 因为答案就在那里...)
1Git 开发人员称 "promisor packs" 正在开发一些东西。不过,他们还没有准备好迎接黄金时段。
这是一项黑客工作,演示了 不应该 怎么做,因为它不使用 API。但是有了这个你就不需要 API 钥匙所以任何人都可以使用这个咒语。
如果您对 active 的含义感到满意,由 Github 确定:
bash shell
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 /'
发出:
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="(....-..-..).*$//'
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
来源:
- @jahrichie 在
- 正则表达式调整:https://regexr.com/