前言:
团队协作,为了规范,一般都是fork组织的仓库到自己帐号下,再提交pr,组织的仓库一直保持更新,减少对项目库的直接操作。
首先我们预览流程脑图为:
下面介绍如何保持自己fork之后的仓库与上游仓库同步。以我 fork 团队的前端仓库为例
言外之意就是A->B的过程
1、要派生一个项目,请单击fork按钮,如下所示
2、分叉项目之后,您需要通过单击它将分叉项目添加到一个fork组
3、接下来的一段时间内,它将开始处理一个项目,如下图所示
4、它会在项目过程完成后显示成功信息
5、然后就可以在自己的帐号下 clone 相应的仓库
代码语言:javascript复制注意:此时clone的项目是B分组下的项目,否则会出错
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
输出如下:
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
删除掉,然后重新添加,此处也是我遇到的坑
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