Svn command in linux
1.svn状态:
svns tatus path
(M:修改的文件,?:新添加的文件,D:删除的文件,U:更新文件);
svns tatus -v path
显示该目录下面所有的文件和子目录状态
2.svn信息(主要可以看出svn的版本号):svn info ;
3.查看svn log:svn log -ln(n个连续的log)
svn log test.php
显示test.php文件的所有修改记录,及其版本号的变化
4.从svn中拿下数据:svn checkout (source address) . (checkout可以简写成co);
5.数据更新:svn update(每次update之后会得到一个最新的版本号);
update的三种用法:
第一:svn update
第二:svn update -r m(指的是版本号)path(还原到m版本)
第三:svn update test.php(更新,于版本库同步。如果在提交的时候提示过期的话,是因为冲突,需要先update,修改文件,然后清除svn resolved,最后再提交commit)
6.svn添加文件:svn add test.php;
在添加一个新的文件夹的时候,提交之前需要svnadd file,但是没有commit之前,test.php只在本地存在,add只是给test.php做一个标记而已。
7.svn删除文件:svn delete file;
8.svn提交(需要著名文件修改的地方):svn commit path -m'~message'
9.svn重命名命令:svn mv file filename(不能直接用mv命令,因为先前的file文件已经在版本控制之内了)
11.svn log -r12
12为版本号
svn log -vr12
的详细信息,你可以得到版本号为12的详细信息。
包括路径和被修改的时间
svn update -r12
回滚到版本号为12的版本
update下来之后这个已经在版本控制之内,不能进行提交,所以你要做的事情就是讲这个文件重新导入svn
svn mv sourcefilename z
svn export z sourcefilename
12.svn diff -r m:n test.php
比较m和n两个版本下的test.php比较差异
13.svn merge -r m:n test.php
合并m和n的差异合并到当前文档,但是一般会差程差异。
14.svn help
svn帮助
上面是svn常见的命令
下面是一些不经常用的命令
15. 版本库下的文件和目录列表 svn list path
显示path目录下的所有属于版本库的文件和目录
简写:svnls
16.创建纳入版本控制下的新目录
svn mkdir: 创建纳入版本控制下的新目录。
用法:
1、mk dir PATH…
2、mk dir URL…
17.创建版本控制的目录。
1、每一个以工作副本PATH指定的目录,都会创建在本地端,并且加入新增调度,以待下一次的提交。
2、每个以URL指定的目录,都会透过立即提交于仓库中创建。在这两个情况下,所有的中间目录都必须事先存在。
18、恢复本地修改
svn revert: 恢复原始未改变的工作副本文件(恢复大部份的本地修改)。revert:
用法:revert PATH…
注意:本子命令不会存取网络,并且会解除冲突的状况。但是它不会恢复被删除的目录 代码库URL变更
19.svn switch (sw):
更新工作副本至不同的URL。
用法:1、switch URL[PATH]
2、switch–relocate FROM TO [PATH...]
注意:1、更新你的工作副本,映射到一个新的URL,其行为跟“svnupdate”很像,也会将服务器上文件与本地文件合并。这是将工作副本对应到同一仓库中某个分支或者标记的方法。
2、改写工作副本的URL元数据,以反映单纯的URL上的改变。当仓库的根URL变动(比如方案名或是主机名称变动),但是工作副本仍旧对映到同一仓库的同一目录时使用这个命令更新工作副本与仓库的对应关系。
20.解决冲突
svnresolved: 移除工作副本的目录或文件的“冲突”状态。
用法:resolved PATH…
注意:本子命令不会依语法来解决冲突或是移除冲突标记;它只是移除冲突的相关文件,然后让 PATH可以再次提交。
21、输出指定文件或URL的内容。
svncat 目标[@版本]…如果指定了版本,将从指定的版本开始查找。
svncat -r PREV filename > filename (PREV 是上一版本,也可以写具体版本号,这样输出结果 是可以提交的)
虽然svn提供了很好的安全机制,但是在操作的时候要非常小心。如果你一旦删除了某一个文件,一旦提交上去,svn版本库上相应的文件也删除。导致的结果就是你的workmate一旦update之后你workmate的本地副本同样会删除,这是一个很危险的事情。