我可以在 git 的一个命令中推送到多个存储库吗?

Posted

技术标签:

【中文标题】我可以在 git 的一个命令中推送到多个存储库吗?【英文标题】:Can I push to more than one repository in a single command in git? 【发布时间】:2010-09-14 23:19:37 【问题描述】:

基本上我想做git push mybranch to repo1, repo2, repo3之类的事情

现在我只是多次输入push,如果我急于完成push,我只是将它们全部发送到后台git push repo1 & git push repo2 &

我只是想知道 git 是否本机支持我想做的事情,或者是否有一个聪明的脚本,或者可能是一种编辑本地 repo 配置文件的方法,说一个分支应该被推送到多个遥控器。

【问题讨论】:

【参考方案1】:

您可以在 git 中为每个远程设置多个 URL,即使 git remote 命令似乎没有显示我上次检查的这一点。在.git/config 中,输入如下内容:

[remote "public"]
    url = git@github.com:kch/inheritable_templates.git
    url = kch@homeserver:projects/inheritable_templates.git

现在你可以说“git push public”同时推送到两个仓库。

【讨论】:

不错的提示。请注意,这仅适用于推送。对于 fetch 它似乎只使用第一个 url 条目。看来您也可以在这个多遥控器上定位一个分支。因此,如果您在配置中添加类似这样的内容[branch "master"] remote = public,则可以在没有远程名称的情况下执行“git pull”【参考方案2】:

我所做的是在我推送到的主目录中拥有一个单独的裸存储库。然后,该存储库中的更新后挂钩会推送或 rsync 到其他几个公开可见的位置。

这是我的钩子/更新后:

#!/bin/sh
#
# An example hook script to prepare a packed repository for use over
# dumb transports.
#
# To enable this hook, make this file executable by "chmod +x post-update".

# Update static info that will be used by git clients accessing
# the git directory over HTTP rather than the git protocol.
git-update-server-info

# Copy git repository files to my web server for HTTP serving.
rsync -av --delete -e ssh /home/afranco/repositories/public/ afranco@slug.middlebury.edu:/srv/www/htdocs/git/

# Upload to github
git-push --mirror github 

【讨论】:

那很好。愿意分享或解释 git-update-server-info 吗? 正如我在答案中添加的那样:git-update-server-info 写入一些静态信息文件,git 客户端将使用这些文件通过 HTTP 而不是 git 协议访问 git 目录。有关详细信息,请参阅以下内容:kernel.org/pub/software/scm/git/docs/…

以上是关于我可以在 git 的一个命令中推送到多个存储库吗?的主要内容,如果未能解决你的问题,请参考以下文章

我应该将 contentModel.xml 推送到 GitHub 存储库吗?

如果我在我的计算机上本地更改项目名称,我可以将我的代码推送到同一个 GitHub 存储库吗?

如何在 React Router v5 中推送到历史记录?

如何在 React Router v5 中推送到历史记录?

我可以用一个全新的项目覆盖 Git 存储库吗?

如何从 gitlab CI 管道中推送到仓库?