Git - 同时向多个仓库推送改动

本文最后更新于:2022年7月4日 上午

有时为了备份数据与同步工作,可能需要同时向多个仓库推送修改,本文记录实现方法。

实现方法

方法一

  • 修改 .git/config 文件:

    [remote "origin"] 下添加需要推送的 url 即可

1
2
3
4
5
6
7
8
9
10
11
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = false
[remote "origin"]
url = git@git.xxxxxxx/VVD_Hexo.git
url = git@git.yyyyyyy/VVD_Hexo.git
fetch = +refs/heads/*:refs/remotes/origin/*
  • 或通过 git remote set-url --add origin https://www.xxx.com/xxx/xxx.git 命令实现上述功能
  • 之后向 origin 推送的内容会走向两个仓库
1
git push origin master

方法二

  • 添加多个 remote
1
2
git remote add origin1 git.a
git remote add origin2 git.b
  • 解决冲突后分别推送
1
2
git push origin1 dev 
git push origin2 dev

方法三

  • 设置 remote 'all'
1
2
3
4
[remote "all"] 
url = git@github.com:luoshupeng/commonuseppa.git
url = git@gitcafe.com:chinesedragon/commonuseppa.git
url = chinesedragon@gitcd.com:/commonuseppa
  • 推送时使用命令:
1
git push all

即可一键 Push 到多个远程仓库中。

问题填坑

  • 如果其中一个是空仓库或者存在冲突无法推送
  • 可以使用 -f 参数强制推送(谨慎操作)
1
git push -f origin master

参考资料


Git - 同时向多个仓库推送改动
https://www.zywvvd.com/notes/tools/git/git-multi-push/git-multi-push/
作者
Yiwei Zhang
发布于
2022年5月23日
许可协议