git如何更新到远程fork仓库?如何更新远程仓库地址?

前言

场景描述:
本地已经有一个从A项目部分拷贝之后生成的新项目B, 并且已经开始开发了新功能, 而A项目也在进行迭代更新.这时产品说要同步A项目的功能到B项目, 两个项目都有了新的更新, 那怎么同步更新呢? 于是想到先fork然后同步, 这个过程有些曲折, 但问题总归是能解决。

一.fork旧项目

1.在A项目选择创建fork;

2.选择存放到个人仓库,配置新项目名称;

3.有个选项是勾选Enable fork syncing决定之后是否跟随更新。建议勾选。


4.点击确定之后就会进入到刚刚fork的仓库C里面了,接下来就可以关联到本地仓库了。

分析: 在项目B本地仓库关联刚刚fork的远程仓库C时, 会发现关联不上。原因是项目B已经有对应的远程仓库了。
这时可以有两个选择

1.再关联一个远程仓库,即fork的远程仓库C;
2.修改本地仓库B对应的远程仓库。

关联多个远程仓库

关联第一个远程仓库就不用多说了, 本文只讲已经存在默认的origin仓库时,如何关联远程仓库?

方法1:

  1. git remote -v //查看远程仓库信息
  2. git remote add originFork  https://git.XXX.com/scm/qhlive/XXX.git(fork项目对应的仓库地址) //关联远程仓库originFork

方法2:

如果是sourceTree, 在右上角找到“设置” - “远程仓库”, 可以添加/移除关联的远程仓库。

方法3

再秀一点也可以直接编辑配置文件, 类似下面这样。
配置文件就是项目下的.git文件,也可以在sourceTree的设置中找到。

修改本地仓库对应的远程仓库

方法1:

git remote -v  #查看远端地址
git remote #查看远端仓库名
git remote set-url origin https://git.XXX.com/xx/xx.git (新地址)

方法2:重命名/删除

  git remote rename origin old-origin
  或
  git remote rm origin
  git remote add origin [url](新地址)

方法3: 和上面一样,更改配置文件。

fork仓库如何与原仓库同步更新?

用一张图说明fork仓库与原仓库的关系

1.上游仓库更新到本地仓库

  git fetch originFork //拉取所有更新的分支
  git pull originFork branch_name (fork元仓库中存在的分支并与本地仓库分支对应)

这时可能会存在报错:fatal: refusing to merge unrelated historie
这是因为两个分支没有取得关系。那么怎么解决呢?
在你操作命令后面加–allow-unrelated-histories

  git pull originFork branch_name --allow-unrelated-histories

tips: 如果是git merge 出现这个问题,也是在后面加-allow-unrelated-histories。

  git merge originFork branch_name --allow-unrelated-histories

2.更新到上游仓库

假设项目B的origin远程仓库和fork的远程仓库都有一个分支feature/XXX, 你在该分支上进行开发,将本地修改commit后,每次push前按下面步骤进行,即可实现与上游原仓库A进行同步更新。

  • (1)同步源仓库的信息到本地
  git remote update feature/XXX
  • (2)将源仓库的信息merge到本地分支:
  git checkout feature/XXX
  git rebase source_repository_name/feature/XXX
  • (3)git push 将最新同步的代码和修改,提交到你的origin仓库
  • (4) 提出Push Request,将修改提交到项目A的远程仓库
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值