1.1. 代码冲突与解决
目前使用git管理代码,产生冲突的原因,主要是当多个人向特性分支提交代码时,如果两个人修改了同一个文件,第二个人提交代码时就可能会冲突。
举例说明:
- 创建远程特性分支、远程个人分支
远程特性分支:br_feature_ipush
远程个人特性分支:br_user1_ipush
远程个人特性分支:br_user2_ipush
- 两个用户user1和user2修改同一个Java文件:com.security.sa.pls.simulate.Simulator
- user1先完成修改,并且已经合入特性分支br_feature_ipush(先push到个人远端:br_user1_ipush,在提交MR请求合入br_feature_ipush)
- user2修改了同一个文件,已经commit或通过push提交个人远端分支:br_user2_ipush
- 此时有两个操作会导致冲突,如下所示
- 更新远程特性分支代码到本地分支冲突场景(即Rebase时)
用户user2更新远程特性分支代码到本地,选择工程,右键Team,rebase,并选择远程特性分支:br_feature_ipush
点击Rebase按钮,则进行代码同步,此时会发生冲突。
- Start Merge Tool to resole conflicts解决冲突
- Skip this commit and continue rebasing the next commits
跳过当前commit记录的冲突,以当前操作分支的修改为准,并进行下一个commit记录的同步
- Abort rebase停止同步,取消rebase操作
- Donothing(return to the workbench)返回到工作目录:可以选择手动解决冲突或取消rebase操作。
解决完冲突,将冲突文件add to index,继续rebase操作
push到远程个人特性分支
如果出现如下这种情(解决冲突前已经push到远程分支),此时需要用强制提交。
强制提交两种方式:TortoiseGIT强制提交
Eclipse强制提交:选择工程,右键Team,Push Branch ‘xxxx’,如下图,并勾选强制覆盖选项。
- 个人远程特性分支合入特性分支场景(即提交Merge Request时)