代码之家  ›  专栏  ›  技术社区  ›  Kissaki

git同时推送到多个存储库[复制]

  •  82
  • Kissaki  · 技术社区  · 14 年前

    我该怎么做 git push 不只是为了 origin 还有另一个远程存储库?

    作为 git推送 只是的别名 git push origin ,我是否可以将git push别名为一次推送到两个远程存储库(仅使用一个命令)?

    我不想在这里寻找一个非git脚本,但想为我在git中的本地存储库设置这个脚本。

    当我尝试后推脚本时失败了。

    3 回复  |  直到 12 年前
        1
  •  129
  •   Matt user129975    10 年前

    我不认为你可以仅仅通过在git上设置一个标志来完成这项工作,但是你可以修改一个配置文件,该文件允许你在不手动输入全部内容的情况下推送到多个远程存储库(只在第一次输入而不是之后输入)

    .git/config 文件可以将多个URL添加到定义的远程:

    [remote "all"]
        url=ssh://user@server/repos/g0.git
        url=ssh://user@server/repos/g1.git
    

    如果你 git push all 现在您可以推送到所有远程url。

        2
  •  56
  •   Édouard Lopez    11 年前

    无手动编辑

    您可以将多个URL添加到远程分支(例如。 all )直接从命令行使用 git config --add remote.xyz.url 使用不同的URL:

    git config --add remote.all.url ssh://user@server/repos/g0.git
    git config --add remote.all.url ssh://user@server/repos/g1.git
    

    全自动

    如果你是 超级懒 而且不要忍受多次复制/粘贴URL,这是给你的:

    function git-add-push-all() {
      while read -r name url method; do
        git config --add remote.all.url "$url"
      done < <(git remote -v | awk '!/^all/ && /push/')
    }
    
    git-add-push-all # from git (sub)directory
    

    一个完整的bashy脚本是可能的(测试 $name $method ),但是 awk 是甜蜜的,对每个人都有爱。

    推动

    然后你可以用

    git push all
    

    工具书类

        3
  •  0
  •   Pierre-Olivier Vares Inoryy    11 年前

    您还可以从配置的远程获取url:

    for repo in g0 g1 ...
    do
        git config --add remote.all.url `git config remote.$repo.url`
    done
    

    其中g0,g1。。。是你遥控器的名字。