FAQ-保持Fork之后的项目和上游同步

2020-11-20 10:05:38 浏览数 (1)

前言:

团队协作,为了规范,一般都是fork组织的仓库到自己帐号下,再提交pr,组织的仓库一直保持更新,减少对项目库的直接操作。

首先我们预览流程脑图为:

下面介绍如何保持自己fork之后的仓库与上游仓库同步。以我 fork 团队的前端仓库为例

言外之意就是A->B的过程

1、要派生一个项目,请单击fork按钮,如下所示

2、分叉项目之后,您需要通过单击它将分叉项目添加到一个fork组

3、接下来的一段时间内,它将开始处理一个项目,如下图所示

4、它会在项目过程完成后显示成功信息

5、然后就可以在自己的帐号下 clone 相应的仓库

注意:此时clone的项目是B分组下的项目,否则会出错

代码语言:javascript复制
git clone git@xxx.gitlab.com:frontend/xxx.gitlab.io.git

6、进入到我们的项目目录

代码语言:javascript复制
cd work/demo

7、使用 git remote -v 查看当前的远程仓库地址,输出如下:

代码语言:javascript复制
origin  git@xxx.gitlab.com:frontend/xxx.gitlab.io.git (fetch)
origin  git@xxx.gitlab.com:frontend/xxx.gitlab.io.git (push)

可以看到从自己帐号 clone 下来的仓库,远程仓库地址是与自己的远程仓库绑定的(这不是废话吗)

接下来添加原库的远程仓库:运行

代码语言:javascript复制
git remote add upstream https://xxx.gitlab.com/frontend/demo.github.io.git

这条命令就算添加一个别名为 upstream(上游)的地址【为对远程仓库起的别名】,指向之前 fork 的原仓库地址。git remote -v 输出如下:

代码语言:javascript复制
origin  git@xxx.gitlab.com:frontend/xxx.gitlab.io.git (fetch)
origin  git@xxx.gitlab.com:frontend/xxx.gitlab.io.git (push)
upstream        https://xxx.gitlab.com/frontend/demo.github.io.git (fetch)
upstream        https://xxx.gitlab.com/frontend/demo.github.io.git (push)

注意如果remote add 地址是https的地址档进行git pull upstream develop出现如下情况

这时候我们就需要刚才添加的upstream删除掉,然后重新添加,此处也是我遇到的坑

代码语言:javascript复制
git remote remove upstream

紧接着运行

代码语言:javascript复制
git remote add upstream git@xxx.gitlab.cn:front-end/demo.git

之后运行下面几条命令,就可以保持本地仓库和上游仓库同步了

方案一

更新代码,并且输出结果

代码语言:javascript复制
git pull upstream develop

git fetch upstream 更新原始仓库上的所有分支和tab git checkout master git merge upstream/master

接着就是熟悉的推送本地仓库到远程仓库

将更新后的本地库通过add,commit,push,一条龙服务上传到自己的Fork库,实现对Fork库的更新

步骤一:

代码语言:javascript复制
git add . && git commit -m "描述"

步骤二:

注意:这里push到的是Fork库的master,origin是Fork远程仓库的别名,是默认的。

代码语言:javascript复制
git push origin master

这样就更新了远程fork库

将本地库的更新到Fork库后,合并到原库,实现提交自己的代码到原库

直接在Fork库上申请一次pull reques

由Fork库的master到原库的某个分支上,进行合并。

到这就完成了利用Fork库进行开发的整个流程

最后:

我们也可以直接由本地库push到原库上:

代码语言:javascript复制
git push 原库名 分支名

另外该方法是较费劲的一种更新办法

其他感兴趣的文章

https://www.zhihu.com/question/20393785/answer/30725725

https://segmentfault.com/q/1010000002590371

https://www.cnblogs.com/kidsitcn/p/4526562.html

https://gitlab.com/gitlab-org/gitlab-foss/issues/21246

0 人点赞