4 svn解决冲突

1、什么情况下会发生冲突

<1>两个开发人员,Harry和Sally,分别从服务器端下载了文件A。

<2>Harry修改之后,A变成了A’,Sally修改之后,A变成了A’’。

<3>Harry先一步提交,使服务器端文件的版本也变成了A’

<4>Sally本地的文件A’’已经过时了,此时她已无法提交文件,服务器会要求她先进行一次更新操作。

<5>此时Sally的更新操作有两种可能

   (1)Sally所做的修改与Harry不是同一个位置,更新操作尝试合并文件成功。

   (2)Sally所做的修改与Harry恰好是同一个位置,更新操作尝试合并文件失败,发生冲突。

<6>发生冲突后,本地工作副本会发生如下变化

      (1)文件A中的内容发生如下改变

public static void main(String[] args) {
        System.out.println("Edit By Command!");
        System.out.println("Edit By Command!");
<<<<<<< .mine
        System.out.println("Edit By Eclipse!");
=======
        System.out.println("Edit By Command!New Edit");
>>>>>>> .r14
        System.out.println("Edit By Command!");
        System.out.println("Edit By Command!");
    }

其中,从<<<<<<< .mine到=======之间是发生冲突时本地副本的内容。从=======到>>>>>>> .r14是发生冲突时服务器端的最新内容。注意这里r后面的数字是发生冲突时服务器端的版本号,有可能是任何整数值,r14只是一个例子。

同时文件图标变成一个“黄色的!”。

      (2)与冲突文件同目录下新增文件,扩展名为.mine,其内容是发生冲突时本地副本的文件内容。

      (3)与冲突文件同目录下新增文件,扩展名为.r小版本号,例如MyCRM.java.r13,其内容是冲突发生之前,服务器端的文件内容,可以作为解决冲突的参照。

      (4)与冲突文件同目录下新增文件,扩展名为.r大版本号,例如MyCRM.java.r14,其内容是冲突发生时,服务器端的文件内容。

②解决冲突

      (1)在冲突文件上点右键→Team→编辑冲突...→出现如下界面

以对比的方式将本地内容与冲突内容显示出来,其中左侧为本地内容,右侧为冲突内容。其中本地内容是可以修改的。

      (2)根据需要和实际情况将本地内容更正——这个过程很可能需要牵涉冲突的两位开发人员进行必要的沟通——机器与程序目前还不能完全取代人工智能。更正后文件图标会变成一个“四角形”,同时冲突文件内的<<<<<<< .mine、=======以及>>>>>>> .r14等标记都会被去掉。

      (3)在冲突文件上点右键→Team→标记为解决

 

 

      此时.mine文件和.r版本号文件都会被自动删除,冲突文件的图标变为“*”,表示可以提交。

      (4)提交文件,文件图标变为“金色圆柱体”。

 

posted @ 2018-06-14 00:13  牧v尘  阅读(142)  评论(0编辑  收藏  举报