svn常⽤命令详解(最全)
命令的使⽤
1、检出
2、导出(导出⼀个⼲净的不带.svn⽂件夹的⽬录树)
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开关
5、更新⽂件
svn update
但是你没有svn update -r 修正版本 ⽂件名
svn update ⽂件名
例⼦:
svn update <-后⾯没有⽬录,默认将当前⽬录以及⼦⽬录下的所有⽂件都更新到最新版本
svn update -r 200test.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 deletetest.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、查看⽂件详细信息
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、创建纳⼊版本控制下的新⽬录
15、恢复本地修改
svn revert [–recursive] ⽂件名
注意: 本⼦命令不会存取⽹络,并且会解除冲突的状况。但是它不会恢复被删除的⽬录。
例⼦:
svn revert foo.c <- 丢弃对⼀个⽂件的修改
svn revert --recursive . <-恢复⼀整个⽬录的⽂件,.为当前⽬录
16、把⼯作拷贝更新到别的URL
17、解决冲突
svn resolved [本地⽬录全路径]
例⼦:
$ svn update
C foo.c
Updated to revision 31.
如果你在更新时得到冲突,你的⼯作拷贝会产⽣三个新的⽂件:
$ ls
foo.c
<30
<31
当你解决了foo.c的冲突,并且准备提交,运⾏svn resolved让你的⼯作拷贝知道你已经完成了所有事情。
你可以仅仅删除冲突的⽂件并且提交,但是svnresolved除了删除冲突⽂件,还修正了⼀些记录在⼯作拷贝管理区域的记录数据,所以我们推荐你使⽤这个命令。
18、不checkout⽽查看输出特定⽂件或URL的内容
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提⽰那些⽂件不需要控制,挺烦的。这时候可以把这些⽂件加⼊忽略列表。
18、SVN其它相关功能
19、SVN Commit(版本提交)
把⾃⼰⼯作拷贝所做的修改提交到版本库中,这样别⼈在获取最新版本(Update)的时候就可以看到你的修改了。
20、Show log(显⽰⽇志)
显⽰当前⽂件(夹)的所有修改历史。SVN⽀持⽂件以及⽂件夹独⽴的版本追溯。
21、Repo-Browser(查看当前版本库)
查看当前版本库,这是TortoiseSVN查看版本库的⼊⼝,通过这个菜单项,我们就可以进⼊配置库的资源管理器,然后就可以对配置库的⽂件夹进⾏各种管理,相当于我们打开我的电脑进⾏⽂件管理⼀样。
22、Revision Graph(版本图形)
查看当前项⽬或⽂件的修订历史图⽰。如果项⽬⽐较⼤型的话,⼀般会建多个分⽀,并且多个⾥程碑(稳定版本发布),通过这⾥,我们就可以看到项⽬的全貌。
23、Resolved(解决冲突)
如果当前⼯作拷贝和版本库上的有冲突,不能⾃动合并到⼀起,那么当你提交修改的时候,tortoisesvn就会提⽰你存在冲突,这时候你就可以通过这个菜单项来解决冲突。冲突的解决有两种,⼀种是保留某⼀份拷贝,例如使⽤配置库覆盖当前⼯作拷贝,或者反过来。还有⼀种是⼿动解决冲突,对于⽂本⽂件,可以使⽤tortoiseSVN⾃带的⼯具,它会列出存在冲突的地⽅,然后你就可以和提交者讨论怎么解决这个冲突。同时它也对Word有很好的⽀持
24、Update to Revision(更新⾄版本)
从版本库中获取某⼀个历史版本。这个功能主要是⽅便查看历史版本⽤,⽽不是回滚版本。注意:获取下来之后,对这个⽂件不建议进⾏任何操作。如果你做了修改,那么当你提交的时候SVN会提⽰你,当前版本已失效(即不是最新版本),⽆法提交,需要先update⼀下。这样你所做的修改也就⽩费了。
25、Revert(回滚)
发布评论