问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

GitLab代码同步与冲突解决完全指南

创作时间:
作者:
@小白创作中心

GitLab代码同步与冲突解决完全指南

引用
CSDN
1.
https://blog.csdn.net/mo_sss/article/details/139782566

在多人协作开发项目时,代码同步和冲突解决是团队协作中非常重要的一环。本文将详细介绍如何在GitLab上进行代码同步和冲突处理,包括从远程同步到本地、本地同步到远程、两个远程分支之间的代码同步,以及具体的冲突解决步骤。

一、前提(可跳过)

场景为项目组多人同时开发一个项目,同步代码与冲突解决。现在项目经理将项目的远程仓库和本地代码仓库都建好了,并将两者建立了连接,且默认的分支都是main。此时有项目成员加入,项目经理给了他远程仓库的拉取链接,让新成员在自己的电脑上的IDEA上首次拉取项目。然后项目经理在远程仓库上创建了一个新的分支dev-jwh,这个分支给该新成员使用,来提交开发的代码。现在远程仓库有main和dev-jwh两个分支,新成员开发使用dev-jwh来推送代码,推送后项目经理来将其合并到main分支。当然,正常的开发可能是两个分支都先合并到dev分支,然后测试没问题再合并到main分支,为了易读易演示,我们就用这两个来分支来操作。

二、代码同步与冲突解决

首先,成员每次开发任务前最好先拉取更新代码。然后进行开发,开发的新业务代码,定时推送到指定分支上如dev-jwh。

1. 代码同步

同步代码有以下几种

1.1 远程同步到本地

(如将远程分支main同步到本地当前分支dev-jwh)

1.1.1 命令操作

命令如下

git pull origin main

1.1.2 idea操作

如果是idea中操作,如下,现将当前本地分支与远程main分支建立连接。然后更新项目。

2. 本地同步到远程

(如将本地当前分支dev-jwh同步到远程分支main)

2.1.1 命令操作

命令如下

git add .
git commit -am"注释信息"
git push origin main

2.1.2 idea操作

如果是idea中操作,如下,现将当前本地分支与远程main分支建立连接。然后先Commit再Push。

3. 本地同步到远程(dev-jwh)

当我们开发时,大多时候是不会同步到远程main分支的。我们现在来演示一下本地dev-jwh分支同步到远程dev-jwh分支。

3.1 命令操作

命令行操作(默认本地当前分支为dev-jwh,如果不是则需使用checkout切换当前分支到dev-jwh)

git add .
git commit -am"注释信息"
git push origin dev-jwh

3.2 idea操作

将当前分支dev-jwh与远程Remote分支dev-jwh连接

然后执行commit-->push推送

4. 将两个远程分支代码同步

在gitlab同步两个远程分支的代码时,有两种情况。一种是提交后在界面出现提示Create merge request。一种是没有提示,没提示时则New merge request。

4.1 Create merge request

上面我们将dev-jwh本地代码同步到远程dev-jwh分支上了,此时远程的main分支还没有同步。将远程分支dev-jwh上的代码同步到远程分支main上,可以在Gitlab平台上操作。在提交代码到远程仓库之后,gitlab平台的Merge request部分就会收到提交信息。

项目左侧栏

Merge requests

4.1.1 创建合并请求

选择

Create merge request

进行同步操作

当然,如果这里没有上图中的提示(默认main分支外的分支提交会以请求的形式出现在上图中的位置提示)

可到下一小节<4.2 New merge request>进行操作

4.1.2 合并请求标题和描述填写

默认内容如下

可在

Title

填写请求的标题

Description

填写请求描述

当然这里可以默认即可

4.1.3 取消勾选

注意,

Merge options

中的第一项

Delete source branch when merge request is accepted

默认是勾选的

一定要取消勾选

然后点击

Create merge request

创建请求,从dev-jwh同步到main

4.1.4 授权并合并

然后依次选择

Approve

Merge

即可(其余内容不用填写)点击

Merge

后即可实现同步代码到远程

main

分支

4.1.5 合并完成

执行后如果代码没冲突则不需要解决,代码同步完成,如下图

4.1.6 合并未完成-需解决冲突

如果有冲突则会在界面出现

Resolve conflicts

此时需要点击

Resolve conflicts

解决冲突,解决冲突可跳转到第5小节:

  1. 冲突解决

4.2 New merge request

4.2.1 创建合并请求

当界面没有提交的合并请求时,可以在右上角新建合并请求,如下图,选择

New merge request

进行同步操作

4.2.2 分支选择

选择要合并的分支,左边是当前分支,右边是要合并到的分支默认

main

左边我们选择我们刚刚提交的

dev-jwh

分支,然后点

Compare branches and continue

对比两个分支然后继续

4.2.3 合并信息填写

这里可以对这次合并做一些内容设置,如给这次修改起个名字,然后写点描述

4.2.4 取消勾选

然后在

Merge options

中取消勾选Delete选项,默认是勾选的,如果不取消勾选,则合并后我们的分支

dev-jwh

则会被删除

取消勾选后,点

Create merge request

创建合并

4.2.5 授权并合并

这里我们先授权点

Approve

,也可以之前就点,我们这里点也没问题

4.2.6 冲突解决

然后可以看到有

Resolve conflicts

表示有冲突需要解决,点它就行

4.2.7 代码选择

这里可以看到有两部分,一部分是

Use ours

表示

dev-jwh

分支,一部分是

Use theirs

表示

main

分支

选择用哪个分支的代码进行覆盖,我们使用自己的dev-jwh

Use ours

然后点

Commit to source branch

将代码合并任务提交

4.2.8 再次合并

然后会跳回到merge界面,再次点击

Merge

即可,注意,这里再确认一下

Delete source branch

选项是未勾选的

4.2.9 合并成功

Merge之后如果没问题,界面如下表示合并成功

5. 冲突解决

5.1 制造冲突

我在两个远程分支的某个代码片段改成不同的内容

dev-jwh分支的内容是

列表数量

main分支的内容分是

列表大小

当两个分支的代码冲突时,解决如下

5.2 合并及解决冲突

有冲突时,Merge按钮是灰色的,此时需要先解决冲突再Merge

点击Resolve conflicts

然后在解决冲突界面选用

Use ours

自己的代码覆盖别人的,还是选择

Use theirs

别人的覆盖自己的代码

这里我选择

Use ours

,即将注释内容为

列表数量

的内容保留

选了用自己的之后提交信息到资源分支

Use ours

-->

Commit to source branch

解决冲突后返回merge界面,别忘了点Approve授权通过

刷新界面,再次点击Merge

5.3 合并成功

合并成功后的界面如下

5.4 查看合并结果

查看远程仓库main分支的代码,已更新为自己的内容(获取列表数量),冲突解决

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号