• 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的远程仓库

  • 相关阅读:
    火车头采集器如何采集QQ群成员中的QQ号
    Unix目录结构的来历
    加速Windows 2003关机速度的设置方法
    win2003 序列号 windows2003 sp2可用序列号大全(准版与企业版)
    自己动手在win2003系统中添加虚拟网卡
    Windows Server 2003下DHCP服务器的安装与简单配置图文教程
    win2003远程桌面怎么切换到多用户?
    Win2003打开网页时总是提示添加网址到信任站点的设置方法
    我们正在招聘java工程师,想来美团工作吗?
    JUC回顾之-AQS同步器的实现原理
  • 原文地址:https://www.cnblogs.com/onesea/p/14494983.html
Copyright © 2020-2023  润新知