Eclipse或MyEclipse中使用EGit插件解决代码冲突图文教程

前言

本文介绍使用Eclipse或MyEclipse的Egit插件,来解决本地和服务器代码冲突的问题,帮助0基础新手,掌握Git代码的合并代码技巧和解决冲突的方式,合并代码变成一种基本的编码能力,不在搞丢队友同事的代码,让人唾弃,我用最通俗的语言和一个冲突小案例带你一步一步学会解决代码冲突。

一.代码冲突原因:

自己本地修改的文件的版本跟服务器版本不一致导致。通俗的讲就是你修改的这个文件,别人在你之前修改并提交到远程仓库了,所以Git不允许你直接commit(当然你可以强制提交,但代码就乱了),所以,按照正常的代码提交流程,应该先把版本更新到和Git服务器一致,然后再将自己的代码提交。

二.万能笨办法解决冲突(推荐刚接触Git新手):

1.一个万能的笨办法解决冲突思路:

将自己的代码完整导出一份。然后,重置本地代码为服务器上的代码,再将自己改过的代码一个一个粘贴回来(此法很笨但很稳,绝对不会把队友的代码给冲突了,让人嫌弃,适合刚接触Git的新人,见过太多盲目自信的Git新人把老员工代码合并丢失了,下场自己想象吧)。

2.合并冲突的具体操作:

  • 备份自己代码:先将本次改动过的文件拷贝到桌面,或整个项目都Export导出。
  • 强制恢复自己代码为服务器代码:右键项目选择Team->Reset;选择Romote Tracking->单击你想同步的远程分支名;再在下方的Reset Type单选框中选择Hard。
  • 将自己刚才写的代码,一点一点的粘贴到新代码上。

三.Git合并的方式解决冲突(划重点)

案例: 本地的TimeUtils类中,将main方法给删除了,但此时与服务器代码冲突,而且服务器上其他人还该了其他文件,此时如何解决冲突,并将服务器代码拉到本地呢?接下来来个看图操作,让你一把学会在Eclipse中使用Egit合并冲突。

思路: 将服务器代码和自己代码手工合并,并提交到本地仓库;将服务器代码合并到本地,若有冲突则解决后再次提交到本地仓库,然后pull最新代码(防止你合并代码的这段时间刚巧有人提交代码),然后push推送到远程仓库。

右键单击项目,选择Team-Synchronize Workspace,看看是否有红色的冲突文件。若有则按照图中步骤来。

双击带红色箭头的冲突文件,打开代码比对窗口,然后按照图中提示的方式,将自己的代码合服务器上的代码进行合并,服务器的代码在右侧,自己本地的代码在左侧窗口,将服务器上新增的代码通过中间分隔线上的圆点进行复制即可,自己新增的代码保留,删除的代码不要再添加回来了,你操作的代码一定是左侧窗口中的,右侧窗口代码不需要改动。

本例中,我在本地将main方法给删除了,但服务器上是存在的,此时我们大胆的将服务器端(右侧窗口)新增的代码复制到本地(左侧),然后发现main方法上的是显示红色的冲突提示线的,继续保持左侧代码对main方法的删除状态(可不要再把右侧的main方法在复制到左侧了),这样代码就手动合并完了,单击左侧窗口,然后保存。


然后,右键单击该冲突文件,选择mark as merged,即将该文件标记为已经合并状态了。

然后选择Team -> Commit 进入提交窗口,点击Commit,将代码提交到本地仓库(千万别点Commit and push)。

然后右键单击项目,选择Team -> Merge,即将把服务器远程分支代码,合并到我们本地分支。

这是选择的是与本分支对应的远程分支,比如本地的是dev分支,对应服务器远程的dev分支,那就单击Remote Tracking下的dev,然后单击Merge

代码正常合并完成后,会弹出类似下方的提示框。

这时候,本地代码合远程代码就合并了,但不代表代码就没有冲突了,因为在本案例中,我们本地是没有main方法,而服务器上却存在,所以Git会将这个不一致(冲突)的地方给我们提示出来,我来解释一下是什么意思:

<<<<<<<HEAD
你本地的代码,与服务器冲突的部分
=======
服务器上代码,与本地代码冲突的部分
>>>>>>>res/remote/origin/dev

所以这个尖括号中的代码,要二选一,你要保留服务器上的还是保留自己本地的,需要你自己来确定。我的改动是将main方法删除,自然我将此段代码都删除掉,保存即可。

注意:<<<<<<<HEAD ======= >>>>>>>res/remote/origin/dev 这些GIt冲突提示符,是一定要删除的,不然代码就报错了。

然后将修改后的这个类,添加到待提交状态栏中

此时,还有很多类显示需要提交,但大都不是你修改过的,这是因为你将远程别人修改过的代码合并到你本地代码了,而刚才我们点了一次Commit,将自己写的代码提交到本地仓库了,这时候又将服务器上别人写的代码合并到Eclipse中,会提示跟刚才提交的代码有很多不一致的地方,自然会提示有很多文件需要提交,遇到这种情况别慌。

提交完成后,分支后会有2↑的标记,表名由本地有两次代码版本更新,待提交到服务器。

为了防止在合并代码的时候,有其他人又提交了代码,我们还是先pull一下代码,然后选择push to upstream ,将刚才的两次本地仓库的提交,推送到远程服务器上。

总结

至此,一次完整的代码,合并冲突就完成了。每一个步骤我都做了截图和解释,可能看着比较繁琐,当你多练习几次,熟练后,就发现其实不是很复杂,学会了这个以后,使用Eclipse或者MyEclipse中的EGIT的代码拉取、提交、代码冲突解决、分支合并都已经会了,日常操作已经够用了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值