Linux(ubuntu)下SVN的命令使用指南

以下整理的是svn常用的一些命令

  1. 将文件checkout到本地目录

命令:checkout或co

示例:

I、svn co http://路径(目录或文件的全路径) [本地目录全路径] --username 用户名--password 密码

II、svn co svn://路径(目录或文件的全路径) [本地目录全路径] --username 用户名--password 密码

III、svn checkout http://路径(目录或文件的全路径) [本地目录全路径] --username 用户名

IV、svn checkout svn://路径(目录或文件的全路径) [本地目录全路径] --username 用户名

注意事项:

1、如果不带--password参数传输密码的话,会提示输入密码,建议不要用明文的--password选项。推荐使用示例c、d,其执行之后会提示输入密码

2、其中username 与password前是两个短线,不是一个。

3、若不指定本地目录全路径,则检出到当前目录下。

例子:

svn cosvn://192.168.0.6/test /home/test --username xxx

svn cohttp://192.168.0.6/test/testapp --username xxx

svn checkoutsvn://192.168.0.6/ test /home/ test --username xxx

svn checkouthttp://192.168.0.3/test/testapp --username xxx

2、添加新文件**

命令:svn add

svn add 文件名

注:告诉SVN服务器要添加文件了,还要用svncommint -m真实的上传上去!

例子:

I、svnadd test.c <-添加test.c

svn commint -m “添加测试用test.c“test.php

II、svnadd *.c <-添加当前目录下所有的c文件

svn commint -m“添加测试用全部c文件“*.c

3、导出****(****导出一个干净的不带****.svn****文件夹的目录****)**

命令:svn export

svn export [-r 版本号] http://路径(目录或文件的全路径)[本地目录全路径] --username 用户名

svn export [-r 版本号] svn://路径(目录或文件的全路径)[本地目录全路径] --username 用户名

svn export 本地检出的(即带有.svn文件夹的)目录全路径 要导出的本地目录全路径

注:第一种从版本库导出干净工作目录树的形式是指定URL,

如果指定了修订版本号,会导出相应的版本,

如果没有指定修订版本,则会导出最新的,导出到指定位置。

如果省略本地目录全路径,URL的最后一部分会作为本地目录的名字。

第二种形式是指定本地检出的目录全路径到要导出的本地目录全路径,所有的本地修改将会保留,但是不在版本控制下(即没提交的新文件,因为.svn文件夹里没有与之相关的信息记录)的文件不会拷贝。

例子:

svn exportsvn://192.168.0.3/ test /home/ test --username xxx

svn exporthttp://192.168.0.3/test/testapp --username xxx

svn export /home/ test/home/ testbak

4、将改动的文件提交到版本库**

命令:svn commint或svn ci

svn commint -m “提交备注信息文本“ [-N] [--no-unlock] 文件名

svn ci -m “提交备注信息文本“ [-N] [--no-unlock] 文件名

svn commit -m"LogMessage" [-N] [--no-unlock]PATH(如果选择了保持锁,就使用–no-unlock开关)

必须带上-m参数,参数可以为空,但是必须写上-m

例子:

svn commint -m“提交当前目录下的全部在版本控制下的文件“* <-注意这个*表示全部文件

svn commint -m“提交测试用test.c“test.c

svn commint -m“提交测试用test.c“-N --no-unlock test.c <-保持锁就用–no-unlock开关

svn ci -m“提交当前目录下的全部在版本控制下的文件“* <-注意这个*表示全部文件

svn ci -m “提交测试用test.c“test.c

svn ci -m “提交测试用test.c“-N --no-unlock test.c <-保持锁就用–no-unlock开关

5、更新文件

命令:svn update或svn up

svn update -r 修正版本 文件名

svn update 文件名

例子:

svn update <-后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本

svn update -r 1300test.c <-将版本库中的文件test.c 还原到修正版本(revision)1300

svn update test.c <-更新与版本库同步。

提交的时候提示过期冲突,需要先update 修改文件,

然后清除svnresolved,最后再提交commit。

6、删除文件

命令:svn delete或svn del, svnremove, svnrm

svn delete svn://路径(目录或文件的全路径)-m “删除备注信息文本”

推荐如下操作:

svn delete 文件名

svn ci -m “删除备注信息文本”

例子:

svn deletesvn://192.168.1.1/ trunk /main /test.c -m “删除测试文件test.c”

推荐如下操作:

svn delete test.c

svn ci -m“删除测试文件test.c”

svn delete path -m"delete test fle"

例如:svndelete svn://192.168.1.1/ trunk /main/test.c -m "delete testfile"

或者直接svndelete test.c 然后再svnci -m ‘delete test file‘,推荐使用这种

、加锁/解锁

命令:svn lock

svn lock -m “加锁备注信息文本“ [--force] 文件名

svn unlock 文件名

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

例如:svnlock -m "lock test file" test.c

svn unlock PATH

例子:

svn lock -m“锁信测试用test.c文件“test.c

svn unlock test.php

8、比较差异

命令:svn diff

svn diff 文件名

svn diff -r 修正版本号m:修正版本号n 文件名

例子:

svn diff test.php<-将修改的文件与基础版本比较

svn diff -r 200:201test.php<-对 修正版本号200和修正版本号201 比较差异

svn diffpath(将修改的文件与基础版本比较)

例如:svndiff test.php

svn diff -r m:npath(对版本m和版本n比较差异)

例如:svndiff -r 200:201 test.php

简写:svndi

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

命令:svnmerge

svn merge -r m:n path

例如:svnmerge -r 200:205 test.php(将版本200与205之间的差异合并到当前文件,但是一般都会产生冲突,需要处理一下)

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

命令:svnstatus 或svnst

svn st 目录路径/名

svn status 目录路径/名<-目录下的文件和子目录的状态,正常状态不显示

【?:不在svn的控制中; M:内容被修改;C:发生冲突;

A:预定加入到版本库;K:被锁定】

svn -v 目录路径/名

svn status -v 目录路径/名<-显示文件和子目录状态

【第一列保持相同,第二列显示工作版本号,

第三和第四列显示最后一次修改的版本号和修改人】

注:svnstatus、svndiff和svn revert这三条命令在没有网络的情况下也可以执行的,

原因是svn在本地的.svn中保留了本地版本的原始拷贝。

1)svnstatus path(目录下的文件和子目录的状态,正常状态不显示)

【?:不在svn的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K:被锁定】

2)svnstatus -v path(显示文件和子目录状态)

第一列保持相同,第二列显示工作版本号,第三和第四列显示最后一次修改的版本号和修改人.

注:svnstatus、svndiff和svnrevert这三条命令在没有网络的情况下也可以执行的,原因是svn在本地的.svn中保留了本地版本的原始拷贝.

简写:svnst

11、查看日志

命令:svn log

svn log 文件名

svn log path

例子:

svn log test.php<-显示这个文件的所有修改记录,及其版本号的变化

12、查看文件详细信息

命令:svn info

svn info 文件名

svn info path

例子:

svn info test.php

13SVN帮助

命令:svn help

svn help<-全部功能选项

svn help ci<-具体功能的说明

14、查看版本库下的文件和目录列表

命令:svn list或svn ls

svn list svn://路径(目录或文件的全路径)

svn ls svn://路径(目录或文件的全路径)

例子:

svn listsvn://192.168.0.3/test

svn lssvn://192.168.0.3/test <-显示svn://192.168.0.3/test目录下的所有属于版本库的文件和目录

15、创建纳入版本控制下的新目录

命令:svn mkdir

svn mkdir 目录名

svn mkdir -m "新增目录备注文本" http://目录全路径

创建版本控制的目录.

1、每一个以工作副本PATH 指定的目录,都会创建在本地端,并且加入新增

调度,以待下一次的提交.

2、每个以URL指定的目录,都会透过立即提交于仓库中创建.

在这两个情况下,所有的中间目录都必须事先存在.

例子:

svn mkdir newdir

svn mkdir -m "Makinga new dir." http://192.168.0.3/test/newdir

注:添加完子目录后,一定要回到根目录更新一下,不然在该目录下提交文件会提示“提交失败”

svn update

注:如果手工在checkout出来的目录里创建了一个新文件夹newsubdir,

再用svnmkdir newsubdir命令后,SVN会提示:

svn:尝试用“svn add”或“svn add --non-recursive”代替?

svn:无法创建目录“hello”:文件已经存在

此时,用如下命令解决:

svnadd --non-recursive newsubdir

在进入这个newsubdir文件夹,用ls-a查看它下面的全部目录与文件,会发现多了:.svn目录

再用svn mkdir -m "添hello功能模块文件"svn://192.168.0.3/test/newdir/newsubdir 命令,

SVN提示:

svn:File already exists: filesystem '/data/svnroot/test/db', transaction'4541-1',

path'/newdir/newsubdir '

16、恢复本地修改****,****恢复原始未改变的工作副本文件

命令:svn revert

svn revert [--recursive] 文件名

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

例子:

svn revert foo.c <-丢弃对一个文件的修改

svn revert --recursive. <-恢复一整个目录的文件,.为当前目录

17、代码库URL变更,把工作拷贝更新到别的URL

命令:svn switch或svnsw

svn switch http://目录全路径 本地目录全路径

例子:

svn switchhttp://192.163.0.3/test/456 . <-(原为123的分支)当前所在目录分支到192.163.0.3/test/456

svn switch (sw):更新工作副本至不同的URL.

用法:1、switchURL [PATH]

2、switch–relocate FROM TO [PATH...]

1、更新你的工作副本,映射到一个新的URL,其行为跟“svnupdate”很像,也会将

服务器上文件与本地文件合并.这是将工作副本对应到同一仓库中某个分支或者标记的

方法.

2、改写工作副本的URL元数据,以反映单纯的URL上的改变.当仓库的根URL变动

(比如方案名或是主机名称变动),但是工作副本仍旧对映到同一仓库的同一目录时使用

这个命令更新工作副本与仓库的对应关系.

18、解决冲突,移除工作副本的目录或文件的“冲突”状态

命令:svn resolved

svn resolved [本地目录全路径]

例子:

$ svn update

C foo.c

Updated to revision 31.

如果你在更新时得到冲突,你的工作拷贝会产生三个新的文件:

$ ls

foo.c

foo.c.mine

foo.c.r30

foo.c.r31

当你解决了foo.c的冲突,并且准备提交,运行svnresolved让你的工作拷贝知道你已经完成了所有事情。

你可以仅仅删除冲突的文件并且提交,但是svnresolved除了删除冲突文件,还修正了一些记录在工作拷贝管理区域的记录数据,所以我们推荐你使用这个命令。

注意:本子命令不会依语法来解决冲突或是移除冲突标记;它只是移除冲突的

相关文件,然后让PATH 可以再次提交.

19、不checkout而查看输出特定文件或URL的内容

命令:svn cat

svn cat http://文件全路径

svn cat目标[@版本]…如果指定了版本,将从指定的版本开始查找.

svn cat -r PREVfilename > filename (PREV 是上一版本

例子:

svn cathttp://192.168.0.3/test/readme.txt

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 207,113评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,644评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,340评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,449评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,445评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,166评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,442评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,105评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,601评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,066评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,161评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,792评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,351评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,352评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,584评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,618评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,916评论 2 344

推荐阅读更多精彩内容