前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >FAQ-保持Fork之后的项目和上游同步

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

原创
作者头像
Run丘比特
修改2020-11-20 10:05:38
1.3K0
修改2020-11-20 10:05:38
举报
文章被收录于专栏:边城浪子周刊边城浪子周刊

前言:

团队协作,为了规范,一般都是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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言:
  • 言外之意就是A->B的过程
    • 1、要派生一个项目,请单击fork按钮,如下所示
      • 2、分叉项目之后,您需要通过单击它将分叉项目添加到一个fork组
        • 3、接下来的一段时间内,它将开始处理一个项目,如下图所示
          • 4、它会在项目过程完成后显示成功信息
            • 5、然后就可以在自己的帐号下 clone 相应的仓库
              • 6、进入到我们的项目目录
                • 7、使用 git remote -v 查看当前的远程仓库地址,输出如下:
                • 将本地库的更新到Fork库后,合并到原库,实现提交自己的代码到原库
                • 最后:
                • 其他感兴趣的文章
                相关产品与服务
                Prowork 团队协同
                ProWork 团队协同(以下简称 ProWork )是便捷高效的协同平台,为团队中的不同角色提供支持。团队成员可以通过日历、清单来规划每⽇的工作,同时管理者也可以通过统计报表随时掌握团队状况。ProWork 摒弃了僵化的流程,通过灵活轻量的任务管理体系,满足不同团队的实际情况,目前 ProWork 所有功能均可免费使用。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档