Skip to content

git同一个项目使用多个远程仓库

发表于:2023-04-09
更新于:6 个月前
字数:821 字
阅读:3 分钟

参考信息:


image.png

背景

同一项目需要上传到两个不同搞定远程仓库

解决方案

第一种:从刚开始建项目,需求就是代码要上传到两个或多个仓库

这种情况比较好处理
步骤如下

  1. 本地创建项目
  2. 打开终端 cd/项目 git int
  3. 去对应的两个代码仓库创建本地代码要存储的目录, 并生成一个git地址
  4. 回到终端 分别执行下面语句(仓库 A,B 的名字可以自己起,用来区分哪个远程仓库)

git remote add 仓库 A https:///项目A仓库的地址
git remote add 仓库 B https:///项目B仓库的地址

查看远程仓库的情况
git remote -v
可以看到已经有两个远程仓库了
git push 仓库A master:master
git push 仓库B master:master

pull 的时候也是两次
git pull 仓库A master
git pull 仓库B master

如果是多个代码仓库,每次都要pushpull 多次, 比较繁琐, 可以使用下面的方法
使用 git remote set-url 命令

  1. 删除方法一的仓库A 远程仓库。
    git remote rm 仓库A
  2. 使用如下命令添加远程仓库。
    git remote set-url --add 仓库B(名称) http://仓库A地址
  3. 查看远程仓库情况。可以看到 github 远程仓库有两个 push 地址。这种方法的好处是每次只需要 push 一次就行了。
    git remote -v
    git push 仓库B master:master

第二种:项目中途增加仓库

比如一直在自己的公司git服务器上做开发, 突然有个需求, 让你中途把目前的代码再同步一份放到
另一个git服务器, 而且要不定期向这个服务器更新代码

前置条件
现在已经有本地的代码和一个代码仓库了

  1. 去要求存放代码的git服务器上创建一个git仓库
  2. 执行: git remote add XXXX https://项目A仓库的地址
  3. 从新建的代码库更新一下,合并节点(代码库要求是新库)
shell
git pull bx_bank master

# 报如下错误
# branch master -> FETCH_HEAD fatal: refusing to merge unrelated histories

原因:
不可以合并不同没有相同结点的分支,如果需要合并两个不同结点的分支

解决方法:
那么需要在git pull添加一句代码--allow-unrelated-histories
修改之后的代码,假如源是origin2,分支是master,执行以下代码
git pull origin2 master --allow-unrelated-histories

然后将现在的本地代码push 到远程仓库
git push origin2 master

定期执行git push origin2 master这个语句就好了

追加: 如果只是定期往B仓库同步推代码, B仓库又是一个新建仓库
可以直接加入 add remote ,然后push
git remote add origin 仓库地址
git push -u origin --all
git push -u origin --tags