【问题标题】:git push to multiple repositories simultaneously [duplicate]git同时推送到多个存储库[重复]
【发布时间】:2010-11-23 12:10:19
【问题描述】:

如何使git push 不仅可以推送到origin,还可以推送到另一个远程存储库?

由于git push 只是git push origin 的别名,我可以使用 git push 别名来一次推送到 2 个远程存储库(仅使用一个命令)吗?

我不是在这里寻找非 git 脚本,而是想在 git 中为我的本地存储库设置它。

当我尝试使用 post-push 脚本时失败了。

【问题讨论】:

标签: git version-control dvcs


【解决方案1】:

我不认为你可以通过在 git 上设置一个标志来做到这一点,但是你可以修改一个配置文件,它允许你推送到多个远程存储库,而无需手动将它们全部输入(好吧,只在第一次而不是之后)

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

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

如果您现在git push all,您将推送到所有远程 url。

【讨论】:

  • 远程“黑客”可能是我正在寻找的。 (它不是重新定义git push -> git push origin HEAD 别名,而是做我想做的事情。)在.git/config 中,一次可以将多个urls 添加到remote。谢谢。
  • 有些东西不适合我:stackoverflow.com/questions/15273040/…
  • 很棒的@g19fanatic。它就像魅力:)
  • 如果两个 repo 对相同的用户名(电子邮件)有不同的密码怎么办?
  • @MASh 您通常可以设置 ssh 密钥来解决该问题。
【解决方案2】:

无需手动编辑

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

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

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

然后你可以推送到所有远程

git push all

参考文献

【讨论】:

  • 感谢您的回答。我刚刚进行了设置,可能值得注意的是我需要在 url 中省略 ssh://(我使用的是 bitbucket 和 bluehost)所以我的 git config 命令看起来像这样:git config --add remote。 all.url user@server/repos/g0.git
  • 附加信息:第一个git config -add 将创建一个获取和推送远程,而随后的git config -add 将只创建一个推送远程。
  • 对不起,Windows 用户如何使用您的自动脚本?谢谢。
  • @СашаЧерных 试试Bash on Windows
  • @ÉdouardLopez:我有 Windows 10 LTSB,目前在 Windows don't support LTSB 上使用 Bash。谢谢。
【解决方案3】:

您还可以从配置的遥控器中获取 url:

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

其中 g0、g1、... 是您的遥控器的名称。

【讨论】:

    猜你喜欢
    • 2014-03-15
    • 1970-01-01
    • 2021-09-09
    • 1970-01-01
    • 2011-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多