最近在部署静态博客的时候,想做冗余方案。即是将一个工作目录下文件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
|