----原文来自fasteda.cn 作者:张长瑞
svn help
Bash
svn help — 求助!
svn import
svn import — 递归提交一个路径的拷贝到版本库。
例子:
Bash
svn import -m “New import” myproj http://IP地址/repos/trunk/misc
svn checkout
svn checkout (co)— 从版本库取出一个工作拷贝。
例子:
1.取出一个工作拷贝到本地目录:
Bash
svn checkout file:///var/svn/repos/test
2. 检出两个目录到两个单独的工作拷贝:
Bash
svn checkout file:///var/svn/repos/test file:///var/svn/repos/quiz
3. 支持断点续传,Ctrl+c后,执行同样的命令,继续传输数据。
- 检出某已版本的数据:
Bash
svn checkout -r 2 file:///var/svn/repos/test
svn commit
svn commit(ci) — 将修改从工作拷贝发送到版本库。
例子:
Bash
svn ci –m “” file:///var/svn/repos/test
-m参数为输入的日志记录信息
svn add
svn add — 添加文件、目录或符号链。
例子:
Bash
svn add [file/dir]
可以只添加一个目录而不包括其内容:
Bash
svn add --depth=empty [otherdir]
添加所有的文件内容:
Bash
svn add * --force
A for.c
A something/test/flash.v
A otherdir/docs/baz.doc
svn delete
svn delete(del, remove, rm) — 从工作拷贝或版本库删除一个项目。
例子:
1.删除一个文件
Bash
svn delete myfile
#D myfile
svn commit -m “Deleted file ‘myfile’.”
2.直接删除一个URL,你需要提供一个日志信息:
Bash
svn delete -m “Deleting file ‘yourfile’” file:///var/svn/repos/test/yourfile
3. 强制删除本地已修改文件的例子:
Bash
svn delete --force over-there
svn merge
svn merge —工作拷贝回退到指定版本。
例子:
Bash
svn merge -r rHEAD:109 file:///var/svn/repos/test/yourfile
**rHEAD:109 从当前最新版本回退到109版。操作完成后本地的工作拷贝会更新到109版。
svn copy
svn copy(cp) — 拷贝工作拷贝的一个文件或目录到版本库。
你只可以在单个版本库中拷贝文件,Subversion还不支持跨版本库的拷贝。
+commit
svn move
svn move(mv, rename, ren) — 移动一个文件或目录。
+commit
svn update
svn update(up) — 更新到某个版本。
例子:
svn update后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本 。
Bash
svn update -r 200 test.php
(将版本库中的文件test.php还原到版本200)
svn diff
svn diff(di) — 比较两条路径的区别。
例子:
-
比较BASE和你的工作拷贝(svn diff最经常的用法):
Bash
svn diff COMMITTERS
2. 查看文件COMMITTERS在修订版本9115修改的内容:
Bash
svn diff -c 9115 COMMITTERS
3. 察看你的工作拷贝对旧的修订版本的修改:
Bash
Svn diff -r 3900 COMMITTERS
4. 修订版本3000和35000比较:
Bash
svn diff -r 3000:3500 http://svn.collab.net/repos/svn/trunk/COMMITTERS
svn export
svn export — 导出一个干净的目录树。
例子:
Bash
svn export file:///var/svn/repos my-export
svn list
svn list(ls) — 列出版本库目录的条目。列出库的相应目录中有哪些文件。
+上(-v)后显示详细内容内容:
最后一次提交的修订版本号
最后一次提交的作者
如果锁定,字符为“O”(更多细节见svn info)
大小(单位字节)
最后提交的日期时间
svn log
svn log — 显示提交日志信息。
例子:
1.可以在顶级目录运行svn log看到工作拷贝中所有修改的路径的日志信息:
Bash
svn log
2. 检验一个特定文件所有的日志信息:
Bash
svn log foo.c
3. 如果你手边没有工作拷贝,你可以查看一个URL的日志
Bash
svn log http://svn.xxx.com/repos/test/foo.c
svn status
svn status(stat, st) — 打印工作拷贝文件和目录的状态。
’ ’ 没有修改。
‘A’ 项目预定添加
‘D’ 项目预定删除
‘M’ 项目已经修改了。
‘R’ 项目在工作拷贝中已经被替换了。这意味着文件预定要删除,然后有一个同样名称的文件要在同一个位置替换它。
‘C’ 项目的内容(相对于属性)与更新得到的数据冲突了。
‘?’ 项目不在版本控制之下。
例子:
1.查看项目所有文件的更新信息(包括mv掉的项目)
Bash
svn status --show-updates (-u) wc
#没有-u 则简单的查看当前文件状态
#(-v)更详细的显示信息,包括版本库的修订版本号与修改人名
svn info
svn info — 显示本地或远程条目的信息。
显示:名称、路径、Repository root、版本库的UUID、版本号、类型(文件或目录)、上次修改人,上次修订版本,上次修改日期等
可以直接查库(链接)
svn cat
svn cat — 输出特定文件或URL的内容。
Bash
svn cat [file]
场景一:
功能要切回到之前的某一个版本。
有两种方法可以实现:
方法1: 用svn merge
-
先 svn up,保证更新到最新的版本,如20;
-
然后用 svn log ,查看历史修改,找出要恢复的版本,如10 。如果想要更详细的了解情况,可以使用svn diff -r 10:20 [文件或目录];
-
回滚到版本号10:svn merge -r 20:10 [文件或目录],注意版本号之间的顺序,这个叫反向合并;
-
查看当前工作版本中的文件,如test.cpp和版本号10中文件的差别:svn diff -r 10 test.cpp, 有差别则手动改之;
-
若无差别,则提交:svn ci -m“back to r 10,xxxxx” [文件或目录]。这时svn库中会生成新的版本,如21。
方法2: 用svn up
前2步如方法1,然后直接 svn up -r 10。当前的工作版本就是版本10了。但是注意,这时svn库中会并不会生成新的版本,下次在本地svn up之后,还是会回到之前的版本。