• SVN提交代码冲突解决方法总结


    在近期svn提交代码时遇到多种情况的问题,现做一个解决办法的总结如下:

    插播一条:idea下被svn版本控制各类文件的颜色区分
    红棕色,未加入版本控制;
    绿色,已经加入控制暂未提交;
    蓝色,加入,已提交,有改动,与版本库文件不一致;
    黑色,加入,已提交,无改动,和版本库文件一致;
    灰色:版本控制已忽略文件。

    1.内容冲突:当两名(或更多)开发人员修改了同一个文件中相邻或相同的行时就会发生文件冲突。
    (1)修改同一文件不同位置引发的冲突,其他人在你之前提交了代码
    你提交时报错:该文件已经过期,需要先更新文件
    解决办法:点击update更新该文件代码,在此基础上添加自己更改的部分,再次提交,成功。
    (2)修改同一文件相同位置引发的冲突
    你提交时报错:

    点击update更新该文件版本,提交,再次报错:

    解决办法:与其他人协商,根据冲突部分代码逻辑,选择你的或者别人的代码。
    2.树冲突:当一名开发人员移动、重命名、删除一个文件或文件夹,而另一名开发人员也对它们进行了移动、重命名、删除或者仅仅是修改,在更新时就会发生树冲突。
    (1) 本地删除,外部更改
    A(外部) 修改文件并将其提交至版本库中
    B (本地)同时删除了文件
    B 更新时就会发生树冲突,该文件被标记为冲突,B 的解决方法有:

    • 放弃 A (外部)更改:也就是删除这个文件----直接标记冲突为已解决。
    • 放弃 B (本地)删除:选择取消,右键 TortoiseSVN --> SVN 还原,撤销删除操作。

    (2)本地改名,外部更改
    A(外部) 修改文件,并将其提交至版本库中。
    B (本地)同时将文件改名。
    B 更新时, 该文件被标记为树冲突,B 的解决方法有:

    • 合并 A (外部)更改到改名后的文件中去:直接选合并修改(见下图)----> 标记冲突为已解决,然后提交。
    • 放弃 A 的更改:改名后的文件不包括 A 的更改内容 ----> 直接标记冲突为已解决,然后提交,
    • 放弃 B 的改名:选择取消,TortoiseSVN --> SVN 还原,撤销改名操作。

    (3)本地更改,外部删除
    A(外部)删除了文件,并提交到了版本库;
    B(本地)同时对该文件进行了修改。
    B 更新时,该文件被标记为树冲突,B 的解决方法有:

    • 放弃 A(外部)的删除:不删除文件,同时保留本地内容修改---->直接选保留本地文件,然后提交;
    • 放弃 B(本地)的更改:直接选删除此文件。

    (4)本地更改,外部改名
    A(外部)将文件改名,并提交到了版本库;
    B(本地)修改了文件内容。
    更新时,B 的该文件被标记为树冲突,B 的解决方法有:

    • 合并更改到改名后的文件:选择保留本地文件,手动将更改内容移植到改名后的文件,撤销增加原文件,然后提交。
    • 放弃 A(外部)改名:选择保留本地文件,然后删除改名后的文件,然后提交。
    • 放弃 B(本地)更改:文件改名,内容不变-->直接选删除此文件。

    (5)本地删除,外部改名
    A(外部)将文件改名,然后提交到版本库;
    B(本地)将文件删除。
    更新时,B 的该文件将发生树冲突,B 的解决方法有:

    • 接受 A 的改名:标记冲突已解决;
    • 坚持删除文件:把改名后的文件删除,然后提交。

    (6)本地改名,外部删除
    A(外部)将文件删除,然后提交到版本库;
    B(本地)将文件改名。
    更新时,B 的该文件将发生树冲突,B 的解决方法有:

    • 接受 A 的删除:标记冲突已解决,然后撤销增加改名后的文件;
    • 坚持改名:标记冲突为已解决,然后提交。

    (7)本地改名,外部改名
    A(外部)将文件改名,并提交到版本库;
    B(本地)将同文件改名。
    更新时,B 的该文件将发生树冲突,B 的解决方法有:

    • 用 A 的名字:标记冲突为已解决,撤销增加本地改名后的文件;
    • 用 B 的名字:标记冲突为已解决,删除 A 改名后的文件,然后提交。

    3.总结:对症下药,拒绝盲目反复提交
       SVN代码提交减少冲突的方法无非两种:

      • 避免开发人员同时开发同一文件
      • 开发前需要时常更新本地代码库
  • 相关阅读:
    webrtc公开课
    webrtc第二篇 聊天室
    webrtc第一篇
    lua53
    setValuesForKeysWithDictionary forUndefinedKey
    xcode 插件
    2016年1月7日 隐藏NavigationBar时的一个坑
    jdbc
    brew gradle
    Openwrt TF Card Auto Mount&Check (4)
  • 原文地址:https://www.cnblogs.com/wxywxy/p/10769021.html
Copyright © 2020-2023  润新知