【问题标题】:Fetching simultaneously from several git repositories同时从多个 git 存储库中获取
【发布时间】:2014-04-13 15:40:08
【问题描述】:

我有几个 git 存储库,每个存储库都有几个名为 public_<user> 的遥控器。

我想同时从所有存储库的每个远程获取。

我已经发现 (myrepos) 但这个脚本只适用于 origin 遥控器。

【问题讨论】:

    标签: git fetch


    【解决方案1】:

    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' \;
    

    【讨论】:

    • 听起来不错。如果我想找到 (a) 所有裸存储库或 (b) 定位所有子模块,我将如何更改脚本?
    • 我已经用一些额外的例子更新了答案。
    • 谢谢。我想这应该正是我所需要的。
    【解决方案2】:

    git forward 一次在任意数量的遥控器上获取、修剪和快进任意数量的跟踪分支。这对于同时关注多个遥控器/分支的集成商来说非常棒。

    【讨论】:

      【解决方案3】:

      我相信您正在寻找--all 标志:

      git fetch --all
      

      根据您链接的脚本的快速浏览,该脚本似乎将接受此标志并将其传递给您的每个存储库的 git。

      【讨论】:

      • git fetch --allgit remote update 有区别吗?对我来说,他们都做同样的事情。
      • 据我所知,没有。这里有一些讨论和历史:stackoverflow.com/questions/1856499/…
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-20
      • 2012-02-13
      • 1970-01-01
      • 1970-01-01
      • 2011-04-08
      相关资源
      最近更新 更多