@weidong
2017-11-02T10:02:12.000000Z
字数 2196
阅读 654
版本管理
什么是“版本控制”?
使用版本控制的好处
想要使用版本控制,需要用到两个软件
VisualSVN Server:类似Oracle或者Mysql的用于保存和管理文件(要保存的代码、文件等)的服务端
TortoiseSVN(小乌龟):操作SVN的工具,用于提交、更新、以及检出代码等。
今天只介绍SVN工具的用法,如果有兴趣查看服务端配置,请看下面链接:
http://www.cnblogs.com/xing901022/p/4399382.html
https://www.zybuluo.com/mdeditor#830175 密码 0123456
在想要下载代码的位置,右键单击SVN Checkout
填写版本库URL,以及本地代码文件夹名称。可以选择全部检出,或者根据特定的版本号检出。
输入用户名密码
检出完毕后,当前文件夹下多出了一个.svn文件夹和文件
此时,所有文件图标变成【绿色钩钩】,表示文件为正常状态(无任何改动)
修改代码并提交,打开文件夹里面的【测试文件.txt】
添加一行数据,保存并关闭
此时文件图标变为红色!,表示文件为有改动状态,通过查看图标,可以很容易地看出那些文件从你上次更新工作复本被修改过,且需要提交。
将刚刚修改的文件提交到服务器,选中刚刚修改的文件,右键,选SVN Commit
填写提交信息,点击ok
提交成功,此时已经将本地的修改提交到了服务器
在刚刚检出的文件夹下添加一个文件【Test.txt】,此时发现文件图标是蓝色的?号,表示该文件没有被加入版本控制。
此时需要将文件添加到版本库,选中文件右键,选TortoiseSVN -> Add
文件添加到版本库后,文件图标改为蓝色+(加号),表示该文件已经已经被加入到版本控制了,但是还未提交。
此时只需要将文件提交即可。
提交成功
修改Test.txt 文件,并提交
填写提交日志信息
查看日志信息
此时双击第二个红框里面的Test文件,则出现左边为文件上一个版本的状态,右边为文件当前(最新)版本的状态,因上一个版本Test文件没有任何内容,所以为空。
什么是冲突?
两个人修改了相同文件相同位置,一个人提交后,另一个进行更新,此时这个人如果和上一个人修改了相同的地方,那么更新后文件就会出现冲突
模拟冲突,本机新建两个文件夹,模拟不同的人
两个文件夹分别下载服务器最新的文件,如下图
进入user1文件夹下,修改Test.txt文件,并保持提交
此时进入user2文件夹,打开Test.txt文件,也添加一行数据,保持并提交
提交会出现如下错误,表示服务器有更新的版本,需要更新才可以提交
点击ok,会弹出
点击update
此时版本库就会出现冲突了,因为user1在Test.txt文件的第二行添加了数据,user2也在第二行进行了修改,两个同时修改了一个文件的同一个地方,所以就会出现冲突
如果产生冲突,会生成如上3个文件
打开Test.txt文件,会看到如下
其中,<<<<<<<<.mine .....=======之间的代码是你自己的,而======......>>>>>>>.r5是别人与你冲突的代码部分
解决冲突就是将两份不同的代码合并到一份里面,选择冲突的文件 -> 右键Editconficts:这种方法需要冲突双方经过协商之后将代码更改统一之后再提交。不仅解决了冲突而且还保证了代码是正确的,因为只有一方的代码被提交.
红色的部分是冲突代码:theirs表示当前服务器端最新的代码,Mine表示自己修改后的代码,Merged表示合并后的代码。点击红色后右键选择:use this text block就可以将该部分代码作为合并后的代码
解决冲突,将有冲突部分的代码合并到一起
当发现新提交的代码有问题,然后想将某个旧的版本作为最新的版本时,可以使用回滚。
先更新代码到版本库最新的状态,在查看日志信息界面,选中某个版本右键,选 Revert to this revision 即可