如何使用git remote. 实现跨多个仓库的高效抓取?
我有不少项目,在这些项目的Git fork模型上存在差异,有的属于“集中式”的仓库,而有的则遵循“fork”模型。部分项目附带了多个“对等”的分叉,我不想一直去抓取;因此不想使用“all”功能,因为那比其他任何事情都更让人头疼。
How can remote.groups help solve this?
Can a git global config be utilized?
Is there anything else I should consider?
解决方案
基础用例与单仓配置
remote.<group> 实际上仅对每个Git项目起作用(见下文)
要定义具名的远端组,请编辑你的git配置(打开
.git/config或执行git config --edit),并添加如下内容:
[remotes] key = origin upstream group1 = remote1 remote2 group2 = remote55 remote66组内的远端以空格分隔。
然后你就可以使用这个组的名称,如
git fetch key,甚至可以从多个组并行获取远端,如git fetch --multiple -j4 key group1 group2。-- 答案 来自 Mariusz Pawelski
同样,这些名称也可以在 git remote 界面中使用。
全局Git配置中呢?
在全局配置层面的限制是:如果要用于的仓库中不存在 group 中的任意引用,且你尝试使用 group,那么该操作将失败。
关于更新和远端设置选项呢?
remote.<name>.skipDefaultUpdate(以及现在的 remote.<name>.skipFetchAll)可以被设置为 true,用于那些你不希望被 git remote update 更新的远端,或者通过 git maintenance 更新的远端,前提是 remotes.default 也未定义。然而,所需的工作量可以说与为每个工作仓库手动重复组定义同样繁琐,甚至更繁琐。