首页 > 解决方案 > 我如何定义一个 git 'remote.' 用于获取?

问题描述

我与其他人一起参与了几个项目,这些项目根据客户的要求而发展。很多时候,我完全沉浸在我目前的工作中,没有得到关于其他项目的最新进展。所以我每天早上都会做一次“完整的抓取”,这样我就不会完全迷路。我已经制定了一个为我执行此操作的 shell 脚本,因此它会更改为每个项目的目录,显示它的位置,然后获取(不拉)并将我返回到我所在的位置(注意,它都是一行,只是坏了它有助于阅读):

$ pushd . && cd /W/Git/project1 && pwd && git fetch 
&& cd /W/Git/project2 && pwd && git fetch 
&& cd /W/Git/project3 && pwd && git fetch && popd

我刚读了一点关于远程的东西。将更新为git fetch

git fetch 可以从单个命名存储库或 URL 中获取,或者如果给定并且有远程,则可以一次从多个存储库中获取。配置文件中的条目。

所以我认为git fetch remote.<group>这很适合我可怕的命令行的目的,简化维护和内存。但是我找不到直接参考如何定义这样的remote.<group>.任何人都可以给我一个命令行示例吗?

标签: gitfetchgit-remote

解决方案


一个git fetch命令正在处理一个 git 项目。文档说git fetch允许获取多个遥控器,但它仅适用于一个项目。默认情况下,如果同步获取遥控器(并且从 git 2.24 可以并行完成),但它仍然适用于一个 git 项目。

如果您想从多个项目中并行获取它们,您确实需要运行单独的git fetch命令。我建议您不要cd进入 git 项目,而是只需调用git带有-C参数的命令,然后您可以从任何工作目录调用此命令。

因此,您有问题的示例可能如下所示:

$ git -C /W/Git/project1 fetch && git -C /W/Git/project2 fetch && git -C /W/Git/project3 fetch 

您可以使其并行,但如何做到这一点取决于您使用的外壳。我在 bash 中不是那么好,但这是我尝试使用 bash&在后台执行命令并wait内置以等待所有命令完成:

git -C /W/Git/project1 fetch -v & git -C /W/Git/project2 fetch -v & git -C /W/Git/project3 fetch -v & wait

这里三个git fetch -v命令在后台执行,您等待所有命令完成。我添加了-v详细参数以更好地查看执行的内容。

您也可以尝试循环执行:

for project in /W/Git/project1 /W/Git/project2 /W/Git/project3 ; do echo "fetching for $project"; git -C $project fetch & done ; wait

奖励:我如何定义 git 'remote'。拿来?

这回答了标题中的问题。您现在知道这不是您要寻找的,因为定义remote.<group>仅适用于一个 git 项目。但我实际上找到了您的问题,因为我正在搜索如何定义此remote.<group>配置但一无所获。所以也许有人会觉得它很有用。

要定义命名的远程组,请编辑您的 git 配置(打开.git/config或执行git config --edit)并添加如下内容:

[remotes]
    group1 = remote1 remote2 origin
    group2 = remote55 remote66

组中的遥控器由空格分隔。现在您可以使用此组名称git fetch group1,甚至可以从多个组(如git fetch --multiple -j4 group1 group2.


推荐阅读