zoukankan      html  css  js  c++  java
  • 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的远程仓库

  • 相关阅读:
    [Bzoj2243][SDOI2011]染色(线段树&&树剖||LCT)
    [poj3074]Sudoku(舞蹈链)
    [Bzoj1047][HAOI2007]理想的正方形(ST表)
    [Bzoj1030][JSOI2007]文本生成器(AC自动机&dp)
    [Bzoj2431][HAOI2009]逆序对数列(前缀和优化dp)
    [Bzoj1072][SCOI2007]排列perm(状压dp)
    [Bzoj1195][HNOI2006]最短母串(AC自动机)
    Ajax解决IE浏览器兼容问题
    运行eclipse弹出“Failed to load the JNI shared”解决方法
    Java表单类双击提交
  • 原文地址:https://www.cnblogs.com/onesea/p/14494983.html
Copyright © 2011-2022 走看看