【发布时间】:2014-04-13 15:40:08
【问题描述】:
我有几个 git 存储库,每个存储库都有几个名为 public_<user> 的遥控器。
我想同时从所有存储库的每个远程获取。
我已经发现 (myrepos) 但这个脚本只适用于 origin 遥控器。
【问题讨论】:
我有几个 git 存储库,每个存储库都有几个名为 public_<user> 的遥控器。
我想同时从所有存储库的每个远程获取。
我已经发现 (myrepos) 但这个脚本只适用于 origin 遥控器。
【问题讨论】:
git remote update 命令将对给定存储库的所有遥控器执行fetch 操作:
$ git remote
larsks
origin
$ git remote update
Fetching origin
remote: Reusing existing pack: 1, done.
remote: Total 1 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (1/1), done.
From https://github.com/teythoon/afew
7317eb0..50db012 master -> origin/master
Fetching larsks
From github.com:larsks/afew
如果你想在一个 git 集合中自动运行它 存储库,您可以执行以下操作:
$ find * -maxdepth 1 -name .git -execdir git remote update \;
这会查找包含.git 目录的所有内容,然后在.git 目录的父级中运行git remote update。
要查找所有 裸 存储库,您可以执行以下操作:
$ find * -maxdepth 1 -name index -execdir git remote update \;
也就是说,查找index 文件而不是.git 目录。
如果您想定位所有子模块,可以使用git submodule foreach 命令:
$ find * -maxdepth 1 -name .git -execdir \
git submodule foreach git remote update \;
如果您想将这一切组合成一个命令:
$ find * -maxdepth 1 -name .git -execdir \
sh -c 'git remote update; git submodule foreach git remote update' \;
【讨论】:
git forward 一次在任意数量的遥控器上获取、修剪和快进任意数量的跟踪分支。这对于同时关注多个遥控器/分支的集成商来说非常棒。
【讨论】:
我相信您正在寻找--all 标志:
git fetch --all
根据您链接的脚本的快速浏览,该脚本似乎将接受此标志并将其传递给您的每个存储库的 git。
【讨论】:
git fetch --all 和git remote update 有区别吗?对我来说,他们都做同样的事情。