1、checkout(检出)
如果你是客户端,想对版本进行修改控制,那么第一次你必须要从服务器端检出文件,以后的更改操作就在此文件上执行吧。
方法:在你要保存文件的某个文件夹中的空白地方右键鼠标。选择checkout(检出),在 URL of repository(版本库URL)中输入要链接的地址,点击确定,便下载下来最新文件,你要做的修改应该在此文件夹里执行。我们不妨先叫此文件夹为:working copy 。
*******************************************************************************
我们先说重要的:以后做了任何更改提交你的更改前,请先点击update(更新)一下。
*******************************************************************************
2、update(更新)
右键鼠标——>update(更新)
注意,如果当你的“Working Copy”中有被修改的文件,或者有被删除的文件,并且还未提交这些修改时,这些文件在执行Update过程中是不会被更新的。
重点:如果服务器端版本没更新的话,对你更新是不会有影响的,会更新成功;如果服务器版本更改,但是恰好修改的内容和你修改的内容不在同一个文件内,比如你改的是a里的内容,而服务器改了b中的内容,则也没有影响;
但若是都修改了a中的内容,则出现问题了,会提示你有冲突,只能点“确定”了,你会看到 working copy 文件夹上多了个黄色感叹号,打开 working copy 会发现里面多了几个文件(做了删除操作时不会自动多出文件),这时你不要慌,在有黄色感叹号的文件上(注意不是 working copy 上右键鼠标)——>TortoiseSVN——>Edit conflicts(编辑冲突)##此时,会弹出一个对话框包含三部分,左上角第一个是服务器端版本库对应的内容,右上角第二个是你修改的内容,下边第三个是两者合并的内容,如果你不处理的话默认为两者合并##——>如果确定要用你修改的内容的话,在右上角第二个框中的红色部分右键鼠标——>Use this whole file(使用整个文件)——>关闭对话框,选择save(保存)——> 然后回到 working copy 右键鼠标——>TortoiseSVN——>Rosolved(已解决的),点确定 ##你会发现原来自动添加的那些文件没了###——>再Commit(提交)就ok了
3、修改
当你修改了某个文件内的内容,如果你提交时服务器端版本没有更新,则你可以直接提交成功。
如果服务器端版本已被他人更新,但是恰好修改的内容和你修改的内容不在同一个文件内,比如你改的是a里的内容,而服务器改了b中的内容,则也没有影响;但若是都修改了a中的内容,则会提示你:版本过时需要先更新,但一更新,又出现上面2中特殊颜色部分的问题了,解决方法相同,不再重述。(这就是我们为什么建议先更新一下的原因)
4、放弃修改
当你添加、修改、删除文件后,决定放弃修改,
你可以单击右键,TortoiseSVN->Revert,
本地的“Working Copy”中的文件和目录会恢复到你修改前的状态。
5、删除
如果你在working copy 文件中做删除文件操作,要删除某个文件或者文件夹,建议用svn自带的删除,方法是:在要删除的文件上右键鼠标-->TortoiseSVN——>Delete(删除)。这样你的删除操作才会被保存到日志中,##若要用 windows 自带的删除,这种删除 working copy 上不会出现红色感叹号的更改标志##。然后若要提交更改,右键working copy ——> commit(提交),这时会出现两种情况:
a、服务器端的版本还是你下载时的版本,没有经过别人更新,这时,你可以直接按提示步骤提交成功,提示你版本已经更新到第几版。
b、服务器端的版本已由别人更新过,更新你的 working copy ,在 working copy 上右键鼠标——>update(更新),这时它应该会提示你有冲突,你点“确定”, working copy上出现一个黄色的警示符号。这时请在 working copy 上再右键鼠标——>TortoiseSVN——>Resolve(已解决的)——>确定。就取消了冲突。按理说我们为什么不在update更新前先Resolve (已解决的)来取消冲突呢,这种情况我也试过了,它会说你没更改怎么的,所以你必须经过这么一步。取消冲突后再 commit (提交),就没问题了。
6、添加
这个比较简单。当你在 working copy 文件夹中添加了新的文件时,如果你直接提交,在弹出的提交框中会有你添加的文件,但是复选框没选中,你要自己选中,然后确定即可。
还有一种方法是:在 working copy 内新添加的文件上右键鼠标——>TortoiseSVN——>Add(加入),便会在新添加的文件上出现一个蓝色(+)加号,表示是新添加的,此时直接提交就ok了。第二种方法也可以直接在working copy 文件夹上右键鼠标——>TortoiseSVN——>添加,则新添加的文件都会被加上蓝色 + 号了,效果是一样的。建议用后两种方法。
-------- 进阶 ---------------------------------------------------------
7、分支branches和tags
项目开发初期,还没发布过版本或者只有一个人开发的情况下,代码只保存一个版本就可以了,但是对于产品级的软件,可能会根据客户定制不同内容,也可能只会维护相应已销售版本的bug,这个时候只用一个版本则会在开发和发布版本直接产生切换成本,所以有必要学习下svn使用中的进阶功能,分支和版本控制。一般不成文的规定是,当前主开发版本代码放在主干(trunk)文件夹中,已发布的稳定版本放在标记(tags)文件夹中,对于tags版本中的bug修复或客户功能定制复制到branches文件夹中修改,修改完发布后的确认稳定版本再复制到tags版本中记录。
我就不重复造轮子了,找了几篇文章要么没图要么只能作者自己看懂,发现下面这篇最实用(有图有真相):SVN分支/主干Merge操作小记:https://www.cnblogs.com/xdouby/p/7237005.html (这篇讲的最详细明白)