W3C中文教程
全球最大最新的中文 Web 技术教程
HTML CSS SQL PHP COLORS MYSQL BOOTSTRAP
 

SVN 解决冲突



为什么会产生冲突?

小明和小刚,同时修改了同一个文件的同一个地方。

小明提交了,我没有提交,我就提交不了,这个时候我们要进行先更新,然后在进行提交即可,那如果产生冲突,会生成 3 个文件。

对于每个冲突的文件 Subversion 在你的目录下放置了三个文件,如下:


解决冲突

1.txt.mine 是冲突前自己的文件。可以看下内容为: aaaasdf11222333 dderderder

2.txt.r4 是冲突前本地的版本文件 内容为: aaaasdf11222333

3.txt.r5 是别人赶在你之前提交的版本

这样就不难理解为什么会产生冲突这种奇怪的东西了,因为你们修改的同一块代码,当然会产生冲突。

解决方案如下:

使用 revert(回滚) 操作,该操作表示用户放弃自己的更新代码,然后直接提交,这个时候你的代码就会使服务器上最新的代码,即 A 用户提交的新 代码,你的代码不会被提交,如下所示:


点击 ok 按钮后 可以看到其他三个文件都自动删掉了,1.txt 代码变成如下代码:

66666666666aaaaaaaaaa666

也就是 a 用户提交的代码,我自己更新的代码需要自己动手复制进去即可提交 commit 。

那么第二种解决方法如下:

选择文件 -> 右键 Editconficts

这种方法需要冲突双方经过协商之后将代码更改统一之后再提交。不仅解决了冲突而且还保证了代码是正确的,因 为只有一方的代码被提交。

如上图所示,红色的部分是冲突代码:theirs 表示当前服务器端最新的代码,Mine 表示自己修改后的代码,Merged 表示合并后的代码。点击红色后右键选择: use this text block 就可以将该部分代码作为合并后的代码。

接下来再说说由于冲突导致重要代码被覆盖的情况。冲突发生时如果采取的措施不对可能会导致部分代码丢失,如果想要还原之前的代码也很容易。

选择文件 -> 右键选择 show log 在这里面你可以看见之前提交的所有版本,找到你想要恢复的版本右键选择 revert to this version 就可以恢复了。