SVN常⽤命令详解
命令的使⽤
1、检出
svn
co 路径(⽬录或⽂件的全路径) [本地⽬录全路径]
--username ⽤户名 --password 密码svn co svn://路径(⽬录或⽂件的全路径) [本地⽬录全路径]  --username⽤户名 --password 密码
svn  checkout 路径(⽬录或⽂件的全路径) [本地⽬录全路径] --username ⽤户名
svn  checkout svn://路径(⽬录或⽂件的全路径) [本地⽬录全路径] --username ⽤户名
注:如果不带--password 参数传输密码的话,会提⽰输⼊密码,建议不要⽤明⽂的--password 选项。
  其中 username 与 password前是两个短线,不是⼀个。
  不指定本地⽬录全路径,则检出到当前⽬录下。
例⼦:
svn cosvn://localhost/测试⼯具 /home/testtools--username wzhnsc
svn co localhost/test/testapp--username wzhnsc
svn checkout svn://localhost/测试⼯具/home/testtools--username wzhnsc
svn checkoutlocalhost/test/testapp--username wzhnsc
、导出(导出⼀个⼲净的不带.svn⽂件夹的⽬录树)
2、
svn export  [-r 版本号] 路径(⽬录或⽂件的全路径) [本地⽬录全路径] --username ⽤户名
svn export  [-r 版本号] svn://路径(⽬录或⽂件的全路径) [本地⽬录全路径] --username ⽤户名
svn export 本地检出的(即带有.svn⽂件夹的)⽬录全路径 要导出的本地⽬录全路径
注:第⼀种从版本库导出⼲净⼯作⽬录树的形式是指定URL,
   如果指定了修订版本号,会导出相应的版本,
   如果没有指定修订版本,则会导出最新的,导出到指定位置。
   如果省略 本地⽬录全路径,URL的最后⼀部分会作为本地⽬录的名字。
  第⼆种形式是指定 本地检出的⽬录全路径 到要导出的本地⽬录全路径,所有的本地修改将会保留,
   但是不在版本控制下(即没提交的新⽂件,因为.svn⽂件夹⾥没有与之相关的信息记录)的⽂件不会拷贝。
例⼦:
svn export svn://localhost/测试⼯具/home/testtools--username wzhnsc
svn export svn://localhost/test/testapp--username wzhnsc
svn export/home/testapp/home/testtools
3、添加新⽂件
svn add ⽂件名
注:告诉SVN服务器要添加⽂件了,还要⽤svn commint -m真实的上传上去!
例⼦:
svn add test.php <- 添加test.php
svn commit -m “添加我的测试⽤test.php“test.php
svn add *.php <- 添加当前⽬录下所有的php⽂件
svn commit -m “添加我的测试⽤全部php⽂件“*.php
4、提交
svn commit -m “提交备注信息⽂本“ [-N] [--no-unlock] ⽂件名
svn ci -m “提交备注信息⽂本“ [-N] [--no-unlock] ⽂件名
必须带上-m参数,参数可以为空,但是必须写上-m
例⼦:
svn commit -m “提交当前⽬录下的全部在版本控制下的⽂件“ *<- 注意这个*表⽰全部⽂件
svn commit -m “提交我的测试⽤test.php“test.php
svn commit -m “提交我的测试⽤test.php“-N --no-unlock test.php<- 保持锁就⽤–no-unlock开关
svn ci -m “提交当前⽬录下的全部在版本控制下的⽂件“ *<- 注意这个*表⽰全部⽂件
svn ci -m “提交我的测试⽤test.php“test.php
svn ci -m “提交我的测试⽤test.php“-N --no-unlock test.php<- 保持锁就⽤–no-unlock开关
svn ci -m “提交我的测试⽤test.php“-N --no-unlock test.php<- 保持锁就⽤–no-unlock开关
5、更新⽂件
svn update
svn update -r 修正版本 ⽂件名
repository文件夹可以删除吗svn update ⽂件名
例⼦:
svn update<-后⾯没有⽬录,默认将当前⽬录以及⼦⽬录下的所有⽂件都更新到最新版本
svn update -r200test.cpp<-将版本库中的⽂件 test.cpp还原到修正版本(revision)200 svnupdate test.php<-更新与版本库同步。
            提交的时候提⽰过期冲突,需要先 update 修改⽂件,
            然后清除svn resolved,最后再提交commit。
6、删除⽂件
svn delete svn://路径(⽬录或⽂件的全路径) -m “删除备注信息⽂本”
推荐如下操作:
svn delete ⽂件名
svn ci -m “删除备注信息⽂本”
例⼦:
svn deletesvn://localhost/testapp/test.php -m “删除测试⽂件test.php”
推荐如下操作:
svn delete test.php
svn ci -m “删除测试⽂件test.php”
7、加锁/解锁
svn lock -m “加锁备注信息⽂本“ [--force] ⽂件名
svn unlock ⽂件名
例⼦:
svn lock -m “锁信测试⽤test.php⽂件“test.php
svn unlock test.php
8、⽐较差异
svn diff ⽂件名
svn diff -r 修正版本号m:修正版本号n ⽂件名
例⼦:
svn diff test.php<- 将修改的⽂件与基础版本⽐较
svn diff -r 200:201 test.php<- 对修正版本号200 和 修正版本号201 ⽐较差异
9、查看⽂件或者⽬录状态
svn st ⽬录路径/名
svn status ⽬录路径/名<-⽬录下的⽂件和⼦⽬录的状态,正常状态不显⽰
             【?:不在svn的控制中; M:内容被修改;C:发⽣冲突;
              A:预定加⼊到版本库;K:被锁定】
svn  -v ⽬录路径/名
svn status -v ⽬录路径/名<-显⽰⽂件和⼦⽬录状态
              【第⼀列保持相同,第⼆列显⽰⼯作版本号,
               第三和第四列显⽰最后⼀次修改的版本号和修改⼈】
注:svn status、svn diff和 svn revert这三条命令在没有⽹络的情况下也可以执⾏的,
  原因是svn在本地的.svn中保留了本地版本的原始拷贝。
10、查看⽇志
svn log ⽂件名
例⼦:
svn log test.php<-显⽰这个⽂件的所有修改记录,及其版本号的变化
11、查看⽂件详细信息
11、查看⽂件详细信息
svn info ⽂件名
例⼦:
svn info test.php
12、SVN 帮助
svn help <- 全部功能选项
svn help ci <- 具体功能的说明
13、查看版本库下的⽂件和⽬录列表
svn list svn://路径(⽬录或⽂件的全路径)
svn ls svn://路径(⽬录或⽂件的全路径)
例⼦:
svn list svn://localhost/test
svn ls svn://localhost/test<- 显⽰svn://localhost/test⽬录下的所有属于版本库的⽂件和⽬录
14、创建纳⼊版本控制下的新⽬录
svn mkdir ⽬录名
svn mkdir -m "新增⽬录备注⽂本" ⽬录全路径
例⼦:
svn mkdir newdir
svn mkdir -m "Making a new dir."svn://localhost/test/newdir
注:添加完⼦⽬录后,⼀定要回到根⽬录更新⼀下,不然在该⽬录下提交⽂件会提⽰“提交失败”
svn update
注:如果⼿⼯在checkout出来的⽬录⾥创建了⼀个新⽂件夹newsubdir,
  再⽤svn mkdir newsubdir命令后,SVN会提⽰:
  svn: 尝试⽤ “svn add”或 “svn add --non-recursive”代替?
  svn: ⽆法创建⽬录“hello”: ⽂件已经存在
  此时,⽤如下命令解决:
  svn add --non-recursive newsubdir
  在进⼊这个newsubdir⽂件夹,⽤ls -a查看它下⾯的全部⽬录与⽂件,会发现多了:.svn⽬录
  再⽤ svn mkdir -m "添hello功能模块⽂件"svn://localhost/test/newdir/newsubdir 命令,
  SVN提⽰:
  svn: File already exists: filesystem '/data/svnroot/test/db',transaction '4541-1',
  path '/newdir/newsubdir '
15、恢复本地修改
svn revert [--recursive] ⽂件名
注意: 本⼦命令不会存取⽹络,并且会解除冲突的状况。但是它不会恢复被删除的⽬录。
例⼦:
svn revert foo.c <- 丢弃对⼀个⽂件的修改
svn revert --recursive . <-恢复⼀整个⽬录的⽂件,.为当前⽬录
16、把⼯作拷贝更新到别的URL
svn switch ⽬录全路径 本地⽬录全路径
例⼦:
svn switch localhost/test/456 .<-(原为123的分⽀)当前所在⽬录分⽀到localhost/test/456
17、解决冲突
svn resolved [本地⽬录全路径]
例⼦:
$ svn update
C foo.c
Updated to revision 31.
如果你在更新时得到冲突,你的⼯作拷贝会产⽣三个新的⽂件:
$ ls
$ ls
foo.c
<30
<31
当你解决了foo.c的冲突,并且准备提交,运⾏svn resolved让你的⼯作拷贝知道你已经完成了所有事情。
你可以仅仅删除冲突的⽂件并且提交,但是svnresolved除了删除冲突⽂件,还修正了⼀些记录在⼯作拷贝管理区域的记录数据,所以我们推荐你使⽤这个命令。
18、不checkout⽽查看输出特定⽂件或URL的内容
svn cat ⽂件全路径
例⼦:
svn catlocalhost/
19、新建⼀个分⽀copy
svn copy branchAbranchB  -m "make B branch" //从branchA拷贝出⼀个新分⽀branchB
20、合并内容到分⽀merge
svn merge branchAbranchB  // 把对branchA的修改合并到分⽀branchB
SVN功能详解
TortoiseSVN是windows下其中⼀个⾮常优秀的SVN客户端⼯具。通过使⽤它,我们可以可视化的管理我们的版本库。不过由于它只是⼀个客户端,所以它不能对版本库进⾏权限管理。
TortoiseSVN不是⼀个独⽴的窗⼝程序,⽽是集成在windows右键菜单中,使⽤起来⽐较⽅便。
TortoiseSVN每个菜单项都表⽰什么意思
01、SVN Checkout(SVN取出)
点击SVN Checkout,弹出检出提⽰框,在URL of repository输⼊框中输⼊服务器仓库地址,在Checkout directory输⼊框中输⼊本地⼯作拷贝的路径,点击确定,即可检出服务器上的配置库。
02、SVN Update(SVN更新)
如果配置库在本地已有⼯作拷贝,则取得最新版本只是执⾏SVN Update即可,点击SVN Update,系统弹出更新提⽰框,点击确定,则把服务器是最新版本更新下来
03、Import(导⼊)
选择要提交到服务器的⽬录,右键选择TortoiseSVN----Import,系统弹出导⼊提⽰框,在URL of reposit
ory输⼊框中输⼊服务器仓库地址,在Import Message输⼊框中输⼊导⼊⽇志信息,点击确定,则⽂件导⼊到服务器仓库中。
04、Add(加⼊)
如果有多个⽂件及⽂件夹要提交到服务器,我们可以先把这些要提交的⽂件加⼊到提交列表中,要执⾏提交操作,⼀次性把所有⽂件提交,如图,可以选择要提交的⽂件,然后点击执⾏提交(SVN Commit),即可把所有⽂件⼀次性提交到服务器上
05、Resolving Conflicts(解决冲突)
有时你从档案库更新⽂件会有冲突。冲突产⽣于两⼈都修改⽂件的某⼀部分。解决冲突只能靠⼈⽽不是机器。当产⽣冲突时,你应该打开冲突的⽂件,查以<<<<<<<;开始的⾏。冲突部分被标记:
<<<<<<< filename
your changes
=======
code merged from repository
>>>>>>> revision
Subversion为每个冲突⽂件产⽣三个附加⽂件:
更新前的本地⽂件。
你作改动的基础版本。
更新时从档案库得到的最新版本。
使⽤快捷菜单的编辑冲突Edit Conflict命令来解决冲突。然后从快捷菜单中执⾏已解决Resolved命令,将改动送交到档案库。请注意,解决命令并不解决冲突,⽽仅仅是删除*⽂件并允许你送交。
06、Check for Modifications(检查更新)
点击Check for Modifications,系统列表所以待更新的⽂件及⽂件夹的状态.
07、Revision Graph(版本分⽀图)
查看⽂件的分⽀,版本结构,可以点击Revision Graph,系统以图形化形式显⽰版本分⽀.
08、Rename(改名)
SVN⽀持⽂件改名,点击Rename,弹出⽂件名称输⼊框,输⼊新的⽂件名称,点击确定,再把修改提交,即可完成⽂件改名
09、Delete(删除)
SVN⽀持⽂件删除,⽽且操作简单,⽅便,选择要删除的⽂件,点击Delete,再把删除操作提交到服务器
10、Moving(移动)
选择待移动的⽂件和⽂件夹;按住右键拖动right-drag⽂件(夹)到跟踪拷贝内的新地⽅;松开左键;在弹出菜单中选择move files in Subversion to here
11、Revert(还原)
还原操作,如刚才对⽂件做了删除操作,现在把它还原回来,点击删除后,再点击提交,会出现如上的提⽰框,点击删除后,再点击Revert,即已撤销删除操作,如果这时候点击提交,则系统弹出提⽰框:没有⽂件被修改或增加,不能提交
12、Branch/Tag(分⽀/标记)
当需要创建分⽀,点击Branch/Tag,在弹出的提⽰框中,输⼊分⽀⽂件名,输⼊⽇志信息,点击确定,分⽀创建成功,然后可查看⽂件的版本分⽀情况
13、Switch(切换)
⽂件创建分⽀后,你可以选择在主⼲⼯作,还是在分⽀⼯作,这时候你可以通过Switch来切换。
14、Merge(合并)
主⼲和分⽀的版本进⾏合并,在源和⽬的各输⼊⽂件的路径,版本号,点击确定。系统即对⽂件进⾏合并,如果存在冲突,请参考冲突解决。
15、Export(导出)
把整个⼯作拷贝导出到本地⽬录下,导出的⽂件将不带svn⽂件标志,⽂件及⽂件夹没有绿⾊的”√”符号标志。
16、Relocate(重新定位)
当服务器上的⽂件库⽬录已经改变,我们可以把⼯作拷贝重新定位,在To URL输⼊框中输⼊
17、Add to Ignore List(添加到忽略列表)
⼤多数项⽬会有⼀些⽂件(夹)不需要,如编译产⽣的*.obj, *.lst,等。每次送交,TortoiseSVN提⽰那些⽂件不需要控制,挺烦的。这时候可以把这些⽂件加⼊忽略列表。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。