Eclipse上GIT插件EGIT使用手册之八_解决推送冲突

jopen 9年前
     <p>多人协作开发的情况下,往服务器推送更新时难免出现冲突,所以推送之前需要解决服务器端的最新版本和本地仓库的冲突。Pull操作就是把服务器端的更新拉拢到本地仓库进行合并,解决好合并冲突后,就可以顺利push到服务器分支了。</p>    <p>假设现在Mairo兄弟在用GIT协作开发NewSuperMairoBro游戏,目前服务器端的mushroom.java文件的内容如下:</p>    <p><img alt="Eclipse上GIT插件EGIT使用手册之八_解决推送冲突 " src="https://simg.open-open.com/show/d2ccaf96b99cdb6a7e4f820d941cd728.png" width="261" height="120" /></p>    <p>MairoBro克隆出代码后,Mairo哥哥做了如下修改</p>    <p><img alt="Eclipse上GIT插件EGIT使用手册之八_解决推送冲突 " src="https://simg.open-open.com/show/3aa6a6f029e3c77189d9f1636ec488b5.png" width="232" height="90" /></p>    <p>Mairo弟弟做了如下修改</p>    <p><img alt="Eclipse上GIT插件EGIT使用手册之八_解决推送冲突 " src="https://simg.open-open.com/show/2dd15ce706b989920d264687b1f9057a.png" width="228" height="86" /></p>    <p>然后Mairo弟弟先push代码,Mairo哥哥使用pull来合并本地仓库和远程仓库,将发行文件出现冲突,此时GIT会自动合并冲突的文件,如下图所示:</p>    <p><img alt="Eclipse上GIT插件EGIT使用手册之八_解决推送冲突 " src="https://simg.open-open.com/show/e488284a65942f719c820febb6422dae.png" width="276" height="72" /></p>    <p><img alt="Eclipse上GIT插件EGIT使用手册之八_解决推送冲突 " src="https://simg.open-open.com/show/e8e5313e23079572c88a00a4a736e9c3.png" width="573" height="397" /></p>    <p><img alt="Eclipse上GIT插件EGIT使用手册之八_解决推送冲突 " src="https://simg.open-open.com/show/f54d083607128a98121f1c63a503ad6d.png" width="656" height="185" /></p>    <p>很明显自动合并的冲突文件不能直接使用,我们可以手动调整,右键发生冲突的文件,选择Team -> Merge Tool</p>    <p><img alt="Eclipse上GIT插件EGIT使用手册之八_解决推送冲突 " src="https://simg.open-open.com/show/c36ba1287901c28b1096469c4aaa43d0.png" width="433" height="137" /></p>    <p>第一项是将GIT自动合并过的文件和服务器端文件进行对比</p>    <p>第二项是用本地最新版本的文件和服务器端文件进行对比,建议用此项</p>    <p>接下来就是熟悉的对比界面</p>    <p><img alt="Eclipse上GIT插件EGIT使用手册之八_解决推送冲突 " src="https://simg.open-open.com/show/a36199da48ec6502c020f15fe760da8e.png" width="613" height="301" /></p>    <p>Mairo哥哥将冲突文件修改如下</p>    <p><img alt="Eclipse上GIT插件EGIT使用手册之八_解决推送冲突 " src="https://simg.open-open.com/show/73084ee8cd8b0ceb4e5096b92db88273.png" width="271" height="97" /></p>    <p>然后右键点击此冲突文件,选择Team -> Add to index再次将文件加入索引控制,此时文件已经不是冲突状态,并且可以进行提交并push到服务器端</p>    <p><img alt="Eclipse上GIT插件EGIT使用手册之八_解决推送冲突 " src="https://simg.open-open.com/show/ab52a797565360dbbf7b0ae6a30b4eae.png" width="269" height="70" /></p>    <p>解决合并冲突后,Mairo弟弟只需要将服务器中合并后的版本pull到本地,就完成了一次协作开发的代码合并。从历史记录中可以看到,从mushroom开始历史进入分支,先是mushroomA的记录,然后是mushroomB的记录,最后历史分支合并。</p>    <p><img alt="Eclipse上GIT插件EGIT使用手册之八_解决推送冲突 " src="https://simg.open-open.com/show/24e1c4d59701a987ff42ea7ce9da9985.png" width="342" height="153" /></p>