目录
- 第一章、Git代码冲突介绍
- 1.1)什么是Git代码冲突
- ①git merge命令介绍
- ②代码冲突原因
- 1.2)提示代码冲突的两种情况
- ①本地不同分支的文件有差异时:
- ②本地仓库和git远程仓库的文件有差异时:
- 1.3)解决合并时的代码冲突
- 第二章、具体冲突实例
- 2.1)模拟冲突
- 2.2)手动编辑文件,解决冲突
- 第三章、如何减少项目冲突
友情提醒:
第一章、Git代码冲突介绍
1.1)什么是Git代码冲突
①git merge命令介绍
git merge 用于本地分支的合并。将一个本地分支的更改合并到另一个本地分支时,你会使用git merge命令。
git merge命令用于将一个分支的更改合并到另一个分支。它会将两个分支的更改整合在一起,保留详细的合并信息,并成为一个新的提交。
例如,假设有一个 develop分支和一个 master 分支,您在 develop分支上开发了新的功能,然后想要将这些更改合并到 master 分支中。您可以切换到 master 分支,然后运行 git merge develop命令来实现这一目的。
②代码冲突原因
指在合并(merge)分支或拉取(pull)远程代码时,Git无法自动解决不同分支或版本之间的代码差异,从而导致代码冲突。这种冲突通常发生在同一文件的同一行或相邻行上,但内容不一致的情况下。当Git检测到这种情况时,会标记出冲突的部分,并要求开发人员手动解决这些冲突。通常需要开发人员手动编辑代码,选择保留和合并哪些代码,最终手动解决冲突并提交合并后的代码。
1.2)提示代码冲突的两种情况
①本地不同分支的文件有差异时:
在Git中,合并分支可以在本地进行,也可以在远程仓库进行。因为一般不会去远程仓库合并。我们这里只讨论本地分支合并。
使用git merge命令合并本地分支时,因为各种原因造成了不同分支的相同文件有差异合并时就会导致代码冲突。
场景1:合并本地分支
从本地master分支拉出了develop分支,在develop分支上开发,在这期间,各种原因,master分支发生了变化。等你想把develop分支合并到master分支,提示代码冲突。
②本地仓库和git远程仓库的文件有差异时:
pull命令自动将远程分支的更改合并到当前本地分支,
push命令自动将当前本地分支的更改合并到远程分支,
因此实际上这两个命令包含了合并(merge)操作。可能导致代码冲突。出现代码冲突一般都需要在本地手动解决,不可能push上去远程仓库那边,那边没有人会给你处理冲突,所以这里只讨论pull操作。
场景2:pull拉取代码
开发者A和开发者B都从远程仓库克隆了代码到本地。A开发者修改了一个代码文件后提交代码到git远程仓库成功,B开发者在本地修改了同一个代码文件的相同部分,这时本地仓库和git远程仓库的文件出现了差异,拉取会提示代码冲突。
1.3)解决合并时的代码冲突
①打开冲突文件,手动编辑以解决冲突:
查看冲突标记:在文件中查找冲突标记,通常是"<<<<<<<“,”=======",和 “>>>>>>>”, 这些标记将冲突的代码块分隔开来。
②解决冲突:
手动编辑文件,选择保留需要的代码,删除不需要的代码,并移除冲突标记,保存文件。
③添加文件并提交到远程仓库:
使用 “git add” 命令将解决冲突后的文件添加到暂存区。。运行 “git commit” 命令提交已解决冲突的文件。运行git push命令将修改后的代码推送到远程仓库。
第二章、具体冲突实例
2.1)模拟冲突
开发者A修改了文件fileMergeTest.txt的第5行,然后将更改推送到远程仓库。如图:
同时,开发者B在本地也修改了文件fileMergeTest.txt的第5行如图:
开发者B尝试将远程仓库pull到本地。由于开发者A和开发者B修改了同一个文件的相同部分,开发者B在拉取时会遇到代码冲突。并提示自动合并失败,需要修复冲突,并提交最新修改后的版本
开发者B在打开fileMergeTest.txt文件,会看到类似以下的标记:
<<<<<<< HEAD
// 开发者B的更改
=======
// 开发者A的更改
>>>>>>>
如图:
2.2)手动编辑文件,解决冲突
开发者B需要手动编辑fileMergeTest.txt文件,决定保留哪些更改,删除哪些更改,直到解决所有冲突。 我选择保留本地修改:
解决冲突后,开发者B使用git add fileMergeTest.txt命令提交到暂存区,使用git commit命令提交更改,然后使用git push命令将更改推送到远程仓库。
查看远程仓库,已经同步更新了
第三章、如何减少项目冲突
定期会议:团队可以定期召开会议,例如每日站会和周会,以便成员分享进展、遇到的问题和需求。
使用沟通工具:利用即时通讯工具和项目管理工具(如Jira、pingCode)来促进团队成员之间的沟通和协作。
团队成员应该相互通知自己将要修改的文件,并与产品经理和团队协调,以避免冲突的发生。