GitLab介绍
GitLab 是一个类似于 GitHub 的开源源码托管服务,它除了提供基于 git 的基本代码托管服务外。还具备很多与软件开发协作相关的其他功能。比如 issues、Merge Requests 、CD/CI发布功能等。
GitLab开发中使用流程
在master拉出新的分支
master分支通常是最新的代码,假设现在有一个新的需求,那么就需要基于master创建一个自己的分支,在这个分支上面开发我们的需求。
具体命令如下:
确保你在 master 分支上:
git checkout master
更新 master 分支:
git pull origin master
创建并切换到新的分支:
git checkout -b new-branch-name
通过IDEA创建新分支:
在新的分支上编写代码
在自己创建的分支上面编写需求相关的代码
推送修改代码
创建MergeRequest
创建request
选择合并的source分支和target分支,注意:在开发中一般就合并到测试或者开发分支即可,待到需求上线才将代码合并到主分支。
填写合并标题(Title),描述(Description),审核人(Assignee) 注意:一定要审查Changes和Commit是否和本地一致。
GitLab解决合并冲突
官网:Merge request conflict resolution - 《Gitlab 中文文档》 - 书栈网 · BookStack
上一步提交Request的时候可能会产生冲突,可以通过在线方式进行冲突解决。
Resolve conflicts: interactive mode
单击此按钮将显示有冲突的文件列表,突出显示冲突部分:
一旦所有冲突都标记为使用”我们的”或”他们的”,则可以解决冲突. 这将执行合并请求的目标分支到源分支的合并,使用选择的选项解决冲突. 如果源分支是feature
,目标分支是master
,则类似于执行git checkout feature; git merge master
git checkout feature; git merge master
本地git checkout feature; git merge master
.
这段话摘抄于官网:大概意思就是你通过在线的两个方式解决冲突,例如你的分支feature-test合并请求到sit分支,在线方式解决冲突之后,就会将sit分支上面的代码合并到feature-test上面。变成了返现合并,会造成你分支的污染,合并了sit分支的不属于你的代码。
Resolve conflicts: inline editor
合并冲突解决编辑器允许更复杂的合并冲突,需要用户手动修改文件以解决冲突,才能从 GitLab 界面中解决. 使用内联编辑按钮打开编辑器. 确定更改后,请单击” 提交到源”分支按钮.
解决反向冲突
通过在线方式解决完冲突之后,就被GitLab的反向合并造成自己的开发分支的代码污染。
解决方式:此时我们本地的分支千万别更新代码,这时候本地的分支代码还没有被反向合并。
找到远程自己的分支,删除(注意看清楚不要删除别人的分支)。
删除之后本地的分支还是未被反向合并之前的代码,重新推送到GitLab即可。这样远程又会重新生成和本地一样的分支。