SVN 命令行

因为公司使用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://caoxl.com/svn/remote_dir (SVN项目全路径) -m "必填,不填此命令执行不会成功"

: 服务器上remote_dir若不存在, 会自动创建;
只会上传project_dir目录下的文件到remote_dir的目录下
import之后, project_dir并没有自动转化为工作目录, 需要重新checkout(后面会用到)

checkout - 检出svn项目到本地

1
2
svn checkout https://caoxl.com/svn/remote_dir (SVN项目全路径) project_dir (本地项目全路径) --username 用户名 --password 密码
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的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K:被锁定

svn status -v path (显示文件和子目录状态)
// 第一列保持相同,第二列显示工作版本号,第三和第四列显示最后一次修改的版本号和修改人

svn status / 简写 svn st

: svn statussvn diffsvn 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 - 查看文件详细信息

1
svn info path

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 - 创建纳入版本控制下的新目录

1
svn mkdir newdir

revert - 回滚

1
2
3
svn revert filename
svn revert PATH
svn revert a.php

resolved - 解决冲突

1
svn resolved PATH

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' // 再次提交

Powered by Hexo and Hexo-theme-hiker

Copyright © 2017 - 2023 Keep It Simple And Stupid All Rights Reserved.

访客数 : | 访问量 :