SVN全名Subversion,即版本控制系统。它将数据放置在一个中央仓库(repository)中。这个仓库很像一个普通的文件服务器,不过它会记住每一次文件的变动。这样你就可以把数据恢复到旧的版本,或是浏览文件的变动历史。Subversion是一个通用的系统,可用来管理任何类型的文件,其中包括了程序源码。
svn=代码版本控制系统+备份服务器
1、svn的三大指令
checkout(检出):用于与svn服务器建立连接,输入用户名和密码,获取代码到本地目录(第一次连接使用)
commit:提交本地代码到svn服务器
update:把svn服务器上面的代码更新下来
(update注意:
当本地文件没有变动,服务器文件改动的时候,更新会从服务器取文件覆盖当前文件。
当本地文件有改动,服务器文件没有改动的话,svn端的不会覆盖本地的。
当本地文件有改动,服务器文件有改动的话,如果改动的部分不冲突,就会合并文件到本地,如果有冲突的话,需要自己手动解决冲突,然后再提交。)
2、常见图标说明
常规图标:
出现此图标,说明此文件中的内容与svn服务器文件中的内容一样。
修改图标:
当我们对本地的某个文件进行修改,导致与svn服务器上面的对应的文件的内容不一致就会出现此图标。
无版本控制图标
说明此文件没有与svn服务器建立关联
忽略图标
当我们有些文件不想提交到svn服务器或者没有必要提交,我们可以把这些文件设置为忽略即可,那么提交的时候这些文件就不会出现在提交的文件变更列表中。
忽略一般有两种:
忽略一个具体的文件:1.jpg
忽略某一类的文件:*.jpg
冲突的图标
尤其是团队开发的时候,多个开发人员对同一个文件的相同行代码都进行了修改,那么后者提交的会覆盖前者提交的,但是svn不会覆盖,会提示我们解决冲突。
3、SVN代码冲突的解决
说明:
尤其是团队开发的时候,多个开发人员对同一个文件的相同行代码都进行了修改,那么后者提交的会覆盖前者提交的,但是svn不会覆盖,会提示此文件冲突,需要我们手动去解决冲突。
这里以两个用户分别是dashen和cainiao用户为例.
dashen用户先对1.php文件进行修改然后提交:
dashen用户修改第5行和第6代码之后,进行提交,也就是现在svn服务器中的1.php的文件内容应该dashen提交的。
cainiao用户提交之前,对1.php文件的第5和第6行代码也进行了修改,修改如下:
提交会发现有冲突:
解决办法:点击上面的升级。或者是更新都可以,出现如下文件:
文件说明:
文件名.mine :当前用户准备要提交的文件
文件名.r8(8代表版本号):两者未提交之前,服务器上面最新的文件
文件名.r9(9代表版本号):代表前一个用户提交的服务器上面最新的文件
黄色感叹号的文件:把两者有冲突的代码部分整合在一起。
解决办法:把除开黄色感叹号的以外的三个文件给删除掉,在整合黄色的文件,再次进行提交即可。
整合冲突代码的时候,程序员(工程师)之前应该彼此商量一下,使用谁的代码。不要轻易覆盖人家的代码。
4、SVN版本回退
使用到版本回退的场景:
①不小心删除了一个文件,并且提交了,这时候可以通过提交的日志来找回。
②找回之前所写过代码,这时候也可以通过提交的日志来找回。
具体步骤:
右键更新至版本:
点击日志来找回:
第二步:找到之前提交代码的日志信息,进行找回