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

  • 相关阅读:
    RE
    【LeetCode】198. House Robber
    【LeetCode】053. Maximum Subarray
    【LeetCode】152. Maximum Product Subarray
    【LeetCode】238.Product of Array Except Self
    【LeetCode】042 Trapping Rain Water
    【LeetCode】011 Container With Most Water
    【LeetCode】004. Median of Two Sorted Arrays
    【LeetCode】454 4Sum II
    【LeetCode】259 3Sum Smaller
  • 原文地址:https://www.cnblogs.com/mrwang1101/p/5351462.html
Copyright © 2011-2022 走看看