如何比较svn中的文件 与本地文件的差距
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何比较svn中的文件 与本地文件的差距相关的知识,希望对你有一定的参考价值。
参考技术A 选择文件 - 右键 - TortoiseSVN1 Diff
2 Diff with previous version
3 show log
这三个选项都可以对比 用处不同
如果是eclipse插件的话 在eclipse中选择文件 - 右键 - Compare With
里面的几项都是 各个功能不同 有与当前版本对比的(Base verision) 有与服务器最新版本对比的(Last from repository)有与服务器指定版本对比的(verision) 有与本机历史记录对比的(Local History) 参考技术B 接覆盖原文件的。
发生冲突后,需要根据文件中加入的提示手动处理,然后标记为解决冲突后再提交。
要减少发生冲突的话,一定要在每次开始修改文件前先更新,修改完成后及时提交,这样可大大减少发生冲突的概率。
SVN(TortoiseSVN)详细教程--SVN更新及如何解决冲突文件
一. SVN更新(SVN Update)及如何解决冲突文件:
1. SVN update:
更新本地代码与SVN服务器上最新的版本一致,只要在需要更新的文件夹上点击右键或者在文件下空白处点击右键,选择”SVN Update” (获取指定版本中的内容,点击右键执行SVN菜单中的“Update to reversion“),就可以了。
二. 冲突文件的解决:
1. 对于每个冲突的文件Subversion在你的目录下放置了三个文件:如下:
2. 为什么会产生冲突呢?
为什么会产生冲突代码呢?原因很简单就是因为不同的人,同时修改了同一个文件的同一个地方,这时候,他提交了,我没有提交,我就提交不了,这个时候我们要进行先更新,然后在进行提交即可,那如果产生冲突,会生成如上3个文件。 |
3. 解决方案如下:
1) 首先我们可以看下1.txt代码如下:
<<<<<<< .mine aaaasdf11222333 dderderder ======= b>>>>>>> .r5 |
2) 然后我去掉多余的代码,1.txt变成这样:
aaaasdf11222333 dderderder |
3)进行提交,还是提交不了,如下所示:
4)为什么?因为冲突会产生上面的三个文件,有上面3个文件存在肯定提交不了,这三个文件代码及解释如下:
1. txt.mine | 是冲突前自己的文件(如:aaaasdf11222333 dderderder) |
1.txt.r4 | 是冲突前本地的版本文件(如:aaaasdf11222333) |
1.txt.r5 | 是别人赶在你之前提交的版本(如:b) |
其中:
<<<<<<<<.mine .....======= | 之间的代码是你自己的 |
======......>>>>>>>.r5 | 是别人与你冲突的代码部分 |
这样就不难理解为什么会产生冲突这种奇怪的东西了,因为你们修改的同一块代码,当然会产生冲突。
4. 新的解决方案一:
<<<<<<< .mine
6666666666666600000
=======
66666666666aaaaaaaaaa666
>>>>>>>
前面说过 <<<<<<< .mine …… ======= ……之间的代码是我未产生冲突之前修改的代码, ======= ………>>>>>>> .r16 这中间……的代码是别人与我冲突代码的部分,从上面的代码可以看到 aaaaaaaaa是我同事新增的 ,00000是我后增加的。 |
1)使用revert(回滚)操作,该操作表示用户放弃自己的更新代码,然后直接提交,这个时候你的代码就会使服务器上最新的代码,即A用户提交的新代码,你的代码不会被提交,如下所示:
2)点击ok按钮后 可以看到其他三个文件都自动删掉了,1.txt代码变成如下代码:
66666666666aaaaaaaaaa666
也就是a用户提交的代码,我自己更新的代码需要自己动手复制进去即可提交commit。
5. 新的方案二:
1)假如我现在3.txt产生冲突代码如下:
<<<<<<< .mine
333333338888888888888=======
3333cccccccccc3333>>>>>>> .r16
通过第一点我们知道,333333338888888888888这个内容是我修改后,未产生冲突之前的内容,3333cccccccccc3333这个代码是A用户提交的代码,从上面得知 A用户新增内容是ccccccc,而我新增的内容是8888888。
那么第二种解决方法如下:选择文件->右键Editconficts:这种方法需要冲突双方经过协商之后将代码更改统一之后再提交。不仅解决了冲突而且还保证了代码是正确的,因为只有一方的代码被提交。
如上图所示,
1)红色的部分是冲突代码:
theirs | 表示当前服务器端最新的代码 |
Mine | 表示自己修改后的代码 |
Merged | 表示合并后的代码 |
2)点击红色后右键选择:use this text block就可以将该部分代码作为合并后的代码:
注意:
接下来再说说由于冲突导致重要代码被覆盖的情况。冲突发生时如果采取的措施不对可能会导致部分代码丢失,如果想要还原之前的代码也很容易。 选择文件->右键选择show log在这里面你可以看见之前提交的所有版本,找到你想要恢复的版本右键选择revert to this version 就可以恢复了. |
以上是关于如何比较svn中的文件 与本地文件的差距的主要内容,如果未能解决你的问题,请参考以下文章