最近在部署静态博客的时候,想做冗余方案。即是将一个工作目录下文件Push到多个Git仓库去进行存储。

我的仓库地址为Gitea和Github,Gitea为自建的方案,怕那一天不小心手贱重装机器就没法恢复了,还是使用冗余方案比较好一点。

在互联网一顿寻找,终于找到了方案,以下做个记录!

方案一

这个方案不是很推荐,需要push推送两次

在Git 我已经配置了Gitea为默认的仓库,再添加一次git的仓库

1
git remote add github https://github.com/name/hexo.git

推送到远程仓库

1
git push -u github main

这样项目就同步到了GitHub仓库上面了

这个时候,就可以实现一个项目提交到多个Git地址了,但是麻烦事情也来了,在提交内容的时候需要进行多次Push提交,才能完成同步。

1
2
git push origin master
git push github main

这样就可以完成同步了,但是不需要的时候怎么删除呢?

1
2
3
4
# 删除GitHub的远程地址
git remote rm github
# 查看Git远程地址
git remote -v

这个方法有一个好处是可以进行不同仓库的拉取,在某一个远程仓库可视化修改后,可以拉取下来再同步到另外一个仓库。

1
git pull github main --allow-unrelated-histories

方法二

这个方法只需要push一次就可以同步到多个地址,但是需要仓库间的分支一样。

在实践当中,由于我的gitea仓库的分支是master,GitHub的分支是main,这个时候也是不能推送成功的,这个时候需要改动其中一个的分支,添加和A、B仓库相同的分支。

如果你尝试使用了方法一,需要删除刚刚添加的远程仓库地址。

1
git remote rm github

给默认的地址添加一个可以推送的地址

1
2
3
4
5
6
7
8
9
10
# 添加一个push地址
git remote set-url --add origin https://github.com/name/hexo.git

# 查看Git仓库远程地址
git remote -v

# 应该会出现刚刚添加的地址
origin https://gitea.com/name/hexo.git (fetch)
origin https://gitea.com/name/hexo.git (push)
origin https://github.com/name/hexo.git (push)

这样我们就完成了基本操作,尝试一下Push吧!

1
git push origin master -f

这样就可以在A、B仓库当中,查看到刚刚推送的内容。如果是进行Pull操作的时候,会从orgin的默认地址进行拉取,不会在添加的分支上进行拉取。

如果我们想要删除的方法是

1
git remote set-url -delete origin https://github.com/name/hexo.git