SUBVERSION (SVN) 常用命令和常见问题解决方法

Mofyi | Colin

Subversion是一个自由开源的版本控制系统。由Apache提供支持( https://subversion.apache.org/ ),Subversion将文件存放在中心版本库里,这个版本库很像一个普通的文件服务器。不同的是,它可以记录每一次文件和目录的修改情况,这样就可以在需要的回滚时,将数据恢复到以前的版本,并可以查看数据的更改细节。

1、将文件检出(checkout)到本地目录

svn checkout PATH

PATH代表您的SVN仓库地址,checkout可简写为”svn co PATH”

2、向版本中添加新文件(或文件夹)

svn add FILENAME


# 添加当前目录下所有php文件

svn add *.php


# 递归添加当前目录下的所有新文件

svn add . --no-ignore --force

FILENAME代表您要添加的文件名称

3、更新本地版本

svn update

可简写为”svn up”,更新到最新版本,如需更新到指定版本:

svn update -r m path

4、将改动的文件提交到版本库(提交代码)

svn commit -m "LogMessage" [-N] [--no-unlock] PATH

如果选择了保持锁,就使用–no-unlock开关,svn commit 可简写为”svn ci”

5、svn加锁/解锁

#加锁

svn lock -m "LockMessage" [--force] PATH


#解锁

svn unlock PATH

6、查看文件或者目录状态

#目录下的文件和子目录的状态,正常状态不显示

svn status PATH


#显示文件和子目录状态

svn status -v PATH


#查看当前文件夹svn信息

svn info

7、删除文件

svn delete PATH -m "YOUR MESSAGE"

简写:svn del / remove / rm

8、查看日志

svn log path

9、搜索你的工作副本并执行所有遗留的日志,在这过程中删除锁

svn cleanup

10、比较差异

#将修改的文件与基础版本比较

svn diff PATH


#对版本m和版本n比较差异

svn diff -r m:n PATH

简写:svn di

11、将两个版本之间的差异合并到当前文件

svn merge -r m:n PATH

12、版本库下的文件和目录列表

svn list PATH

显示path目录下的所有属于版本库的文件和目录
简写:svn ls

14、恢复本地修改

svn revert PATH

本子命令不会存取网络,并且会解除冲突的状况。但是它不会恢复被删除的目录

16、代码库URL变更

svn switch NEW_PATH

更新你的工作副本,映射到一个新的URL

17、解决冲突

svn resolved PATH

本子命令不会依语法来解决冲突或是移除冲突标记;它只是移除冲突的相关文件,然后让 PATH 可以再次提交。

18、输出指定文件或URL的内容。

svn cat -r PREV filename > filename

如果指定了版本,将从指定的版本开始查找。 svn cat -r PREV filename > filename (PREV 是上一版本,也可以写具体版本号,这样输出结果是可以提交的)

19、# 查看指定文件的所有提交记录

svn log FILE_NAME


# 查看指定版本号的log

svn log -r 100

20、svn分支

# 创建分支,从主干创建一个分支保存到branches/online1.0

svn cp -m "描述内容" https://URL/repos/trunk https://URL/repos/branches/online1.0


# 合并主干上的最新代码到分支上

cd branches/online1.0

svn merge https://URL/repos/trunk 


# 分支合并到主干

svn merge --reintegrate https://URL/repos/branches/online1.0


# 删除分支

svn rm https://URL/repos/branches/online1.0

21、批量删除.svn目录的命令

find . -type d -name ".svn"|xargs rm -rf