因为公司使用SVN,一般都是可视化操作,突然想玩一下SVN的命令行
安装
SVN可用子命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| svn help add blame (praise, annotate, ann) cat changelist (cl) checkout (co) cleanup commit (ci) copy (cp) delete (del, remove, rm) diff (di) export help (?, h) import info list (ls) lock log merge mergeinfo mkdir move (mv, rename, ren) patch propdel (pdel, pd) propedit (pedit, pe) propget (pget, pg) proplist (plist, pl) propset (pset, ps) relocate resolve resolved revert status (stat, st) switch (sw) unlock update (up) upgrade
|
常用SVN命令行
import
- 上传项目到SVN服务器
1
| svn import project_dir (本地项目全路径) https:
|
注: 服务器上remote_dir
若不存在, 会自动创建;
只会上传project_dir
目录下的文件到remote_dir
的目录下
import
之后, project_dir
并没有自动转化为工作目录, 需要重新checkout
(后面会用到)
checkout
- 检出svn项目到本地
1 2
| svn checkout https: svn checkout / 简写: svn co
|
add
- 添加新文件
1 2
| svn add filename svn add *.php (添加当前目录下所以的PHP文件)
|
update 简写(up)
- 更新文件
1 2 3 4
| svn update / svn up svn update -r 修正版本 文件名 svn update 文件名 svn update / 简写: svn up
|
commit (简写:ci)
- 提交到版本库
1 2 3
| svn commit -m "LogMessage" [-N] [--no-unlock] PATH (如果选择了保持锁,就使用--no-unlock开关) svn commit -m "提交当前目录下的全部在版本控制下的文件" * (*表示全部文件) svn commit / 简写 svn ci
|
status
- 查看文件或者目录状态
1 2 3 4 5 6 7
| svn status path (目录下的文件和子目录的状态,正常状态不显示)
svn status -v path (显示文件和子目录状态)
svn status / 简写 svn st
|
注: svn status
、svn diff
、svn revert
这三条命令在没有网络的情况下也可以执行的,原因是svn
在本地的.svn
中保留了本地版本的原始拷贝。
delete
- 删除文件
1 2 3 4 5
| svn delete path -m 'delele test file svn delete test.php svn ci -m 'delete test file'
svn delete / 简写 svn del/remove/rm
|
log
- 查看日志
1 2
| svn log path svn log -l 3
|
info
- 查看文件详细信息
diff
- 比较差异
1 2 3
| svn diff path svn diff -r m:n path (比较版本m和版本n比较差异) svn diff / 简写 svn di
|
merge
- 合并文件
1
| svn merge -r m:n path (将两个版本之间的差异合并到当前文件)
|
mkdir
- 创建纳入版本控制下的新目录
revert
- 回滚
1 2 3
| svn revert filename svn revert PATH svn revert a.php
|
resolved
- 解决冲突
branchs
- 新建分支
1 2
| svn mkdir branches svn copy 项目地址 -m '创建新分支'
|
tag
- 建立标签
1 2
| svn mkdir tags svn copy 项目地址 -m 'V1.0 tag'
|
lock
- 加锁/解锁
1 2 3
| svn lock -m 'LockMessage" [--force] filename svn lock -m "lock test file" filename svn unlock filename
|
常见问题
不小心提交了一些动态改变根本不需要的文件到svn服务器上
1 2 3 4
| svn resolved filename svn ci -m 'resolved' svn rm filename svn ci -m 'update'
|