zoukankan      html  css  js  c++  java
  • SVN冲突解决:当次提交的和上次提交的出现冲突

    转载于知蚁博客,文章地址:http://www.letuknowit.com/archives/svn-conflict-resolution

    看到那个*了吧,出现这个标记就说明本地副本的文件已经过期了,需要执行svn update了。

    root@letuknowit:/home/kris/calc/trunk# svn up
    Conflict discovered in 'main.c'.
    Select: (p) postpone, (df) diff-full, (e) edit,
            (mc) mine-conflict, (tc) theirs-conflict,
            (s) show all options:
    

    额滴个小心脏啊,又出错了,还要做选择题,纠结啊,纠结前还是看看各个选项都是做啥的吧

    (p) postpone          暂时推后处理,我可能要和那个和我冲突的家伙商量一番
    (df) diff-full        把所有的修改列出来,比比看
    (e) edit              直接编辑冲突的文件
    (mc) mine-conflict    如果你很有自信可以只用你的修改,把别人的修改干掉
    (tc) theirs-conflict  底气不足,还是用别人修改的吧
    (s) show all options  显示其他可用的命令
    

    这里我们先选择p稍候处理,系统会给出如下输出,main.c前面的C标识说明这是一个冲突中的文件,需要手工处理以解决冲突。

            (s) show all options:p
    C    main.c
    Updated to revision 7.
    Summary of conflicts:
      Text conflicts: 1
    

    如果这个时候你查看一下工作拷贝,你会发现多了几个文件,对于每一个冲突的文件,svn会放置三个额外的未版本化文件到你的工作拷贝。

    root@letuknowit:/home/kris/calc/trunk# ls -al m*
    -rw-r--r-- 1 root root 312 2012-09-20 16:35 main.c
    -rw-r--r-- 1 root root 216 2012-09-20 16:35 main.c.mine
    -rw-r--r-- 1 root root 156 2012-09-20 16:35 main.c.r6
    -rw-r--r-- 1 root root 218 2012-09-20 16:35 main.c.r7
    

    其中main.c.mine是融合了你的修改的版本,里面是你更新的内容,main.c.r6是你做更新操作以前的版本,你是在这个版本的基础上做的修改,main.c.r7是版本库中的最新版本,这里有别人的修改,而就是这个修改和你的修改冲突了。这几个文件可以自己去查看下,应该很好理解。
    对了,还有主角没有登场,这个时候如果你看下mian.c的内容,估计你又要郁闷了,和你原先的修改完全不一样了。

    root@letuknowit:/home/kris/calc/trunk# cat main.c
    #include <stdio.h>
    #include "add.h"
    #include "sub.h"
    
    int main()
    {
            printf("5 + 10 = %d.
    ",add(5,10));
            printf("15 - 10 = %d.
    ",sub(15,10));
    <<<<<<< .mine
            //kris's test
            printf("kris: 12 + 28 = %d.
    ",add(12,28));
    =======
            //sally's test
            printf("sally: 60 - 33 = %d.
    ",sub(60,33));
    >>>>>>> .r7
            return 0;
    }
    

    你会看到由小于号、等于号和大于号串组成的三个部分,其中小于号和等号之间的内容是你的修改,而等号和大于号之间的修改是其他人的修改,在明确了冲突的原因之后,我们已经知道怎么修改了,两个人的修改都是需要保留的。
    OK,那就保留所有的修改,删除掉<、=和>,最后的结果如下。
    小于号、等于号和大于号串是冲突标记,并不是冲突的数据,你一定要确定这些内容在下次提交之前得到删除。

    root@letuknowit:/home/kris/calc/trunk# cat main.c
    #include <stdio.h>
    #include "add.h"
    #include "sub.h"
    
    int main()
    {
            printf("5 + 10 = %d.
    ",add(5,10));
            printf("15 - 10 = %d.
    ",sub(15,10));
            //kris's test
            printf("kris: 12 + 28 = %d.
    ",add(12,28));
            //sally's test
            printf("sally: 60 - 33 = %d.
    ",sub(60,33));
            return 0;
    }
    

    冲突解决了,下面的工作就是通知svn,我们已经把冲突搞定了(使用svn resolved命令),下面该你了,可以看到svn将生成的几个临时文件删除了。

    root@letuknowit:/home/kris/calc/trunk# svn resolved main.c
    Resolved conflicted state of 'main.c'
    root@letuknowit:/home/kris/calc/trunk# ls -al m*
    -rw-r--r-- 1 root root 278 2012-09-20 17:07 main.c
    

    接下来提交代码,搞定收工。

    root@letuknowit:/home/kris/calc/trunk# svn ci -m "kris add some test code"
    Sending        trunk/main.c
    Transmitting file data .
    Committed revision 8.

    转载于知蚁博客,本文地址:http://www.letuknowit.com/archives/svn-conflict-resolution

  • 相关阅读:
    JDBC_批量处理语句提高处理速度
    JDBC_获取插入记录的主键值
    JDBC_获取数据库连接
    SmartSprites 智能批量合并 CSS 雪碧图
    移动前端开发技巧摘录
    将已有项目提交到github/从github上pull到本地
    网页设计创新式布局与交互
    如何打好前端游击战
    jQuery Mobile十大常用技巧
    Javascript图片的懒加载与预加载
  • 原文地址:https://www.cnblogs.com/mrwang1101/p/5351462.html
Copyright © 2011-2022 走看看