# GitLab流程说明
# 1、fork 项目
# 1.1 fork项目
在产品上进行fork操作,命名空间(namespace)选择新项目放置的空间
# 1.2 修改项目信息
fork完成后,进入新fork完成后的项目,在Settings -> General
中分别修改
General project
中的Project name
为新名称Advanced
中的Rename repository
中的path为新地址
# 2、clone项目分支
# 2.1 clone版本分支
git clone -b <版本分支名 eg:0925> <项目远程仓库>
# 2.2 修改版本分支名称
本地分支名称修改:
git branch -m <版本分支名 eg:0925> dev
删除远程版本分支:
git push --delete origin <版本分支名 eg:0925>
上传新命名的本地分支:
git push origin dev
把修改后的本地分支与远程分支关联:
git branch --set-upstream-to origin/dev
这样项目仓库就从主库迁出了一个自己的分支作为开发分支
注:这里的目的是把产品上面的版本分支作为项目的开发分支在项目上进行开发,为了规范需要修改掉分支名称,分支名称可以自定义,前提是当前没有同名分支存在
# 3、修改master分支
# 3.1 本地由dev分支切出master
分支
- 本地
dev
分支下:git checkout -b master
# 3.2 删除原master
分支
在
Settings -> Repository->Proteced Branches
中把master分支设置为“Unprotect“在
Settings -> General -> General project-> Default Branch
中将默认分支修改为dev
,保存。在
Repository->Branches
中删除master
分支
# 3.3 新建远程master
分支
上传3.1创建的本地master分支:
git push origin master
把修改后的本地分支与远程分支关联:
git branch --set-upstream-to origin/master
# 3.4 将master
分支设置为默认分支和受保护分支
在
Settings -> General -> General project-> Default Branch
中将默认分支修改为master
,保存。在
Settings -> Repository->Proteced Branches
中把develop
分支设置为“Unprotect“,并设置master
为Protect
# 4、同步源仓库更新
# 4.1 查看远程状态
git remote -v
如果没有添加过上游源仓库那么这里应该只有当前项目远程信息
# 4.2 添加远程上游源仓库即产品仓库
git remote add upstream <产品仓库>
# 4.3 再次查看远程状态,确认是否添加成功
git remote -v
这个时候应该有两条远程信息
# 4.4 同步上游分支代码
fetch
上游源库分支:git fetch upstream <上游分支名称>
- 拉取上游源库分支代码:
git pull upstream <上游分支名称>
- 切换本地相应分支:
git checkout dev
- 合并本地分支与上游源库分支:
git merge --no-ff upstream/<上游分支名称>
# 4.5 更新项目仓库远程分支
git push origin dev
# 5、更新上游源库
# 5.1 由上游迭代分支切出新本地分支repeater
fetch
上游源库迭代分支:git fetch upstream dev:repeater
切换到本地分支
git checkout repeater
# 5.2 上传repeater
到远程分支
- 在本地分支
repeater
进行修改,将项目成果集成到repeater
中 - 拉取上游源库迭代分支更新:
git fetch upstream dev
git merge upstream/dev
- 测试通过后上传远程分支:
git push origin repeater
# 5.3 向上游源库提交merge request
- 基于
repeater
分支创建merge request
Target branch
选择上游源库中的迭代分支
至此项目从产品fork源码并从源库更新并向源库提交更新的整个流程就完成了。
# 6、产品开发验证项目提交成果
# 6.1 切出项目请求分支
拉取请求分支:
git fetch <项目库地址> <项目库请求分支 eg:repeater>
基于请求分支切出本地分支:
git checkout -b <项目仓库名>-repeater FETCH_HEAD
# 6.2 本地运行检查更新内容
# 6.3 本地合并请求分支
合并请求分支如果有冲突解决冲突
git checkout <目标分支eg:dev>
git merge --no-ff <项目仓库名>-repeater
# 6.4 提交合并到远程
将合并好的更新内容提交到远程仓库
git push origin <目标分支eg:dev>
提交完成后整就自动完成了对项目提交的请求内容的Merge
操作