详解Linux下svn命令[转]
上一篇 / 下一篇 2010-05-20 16:35:10 / 个人分类:开心共享
本文讲述了Linux命令行下常用svn命令的使用方法,希望对您有所帮助。51Testing软件测试网&|-P's(^Wv_[&w`Y
51Testing软件测试网 V`4LV*_ycn
1、Linux命令行下将文件checkout到本地目录51Testing软件测试网r0vY+H4lCK\6A]z
"x U_1kW-V%rS9U wR0 svn checkout path(path是服务器上的目录)51Testing软件测试网9?6gxlf}!d}
51Testing软件测试网*[9|.{Pcxd-j
例如:svn checkout svn://192.168.1.1/pro/domain51Testing软件测试网bSZ [1d~
J2y(T&ghj0 简写:svn co
&D8b2r*f O?:_051Testing软件测试网's6S0z$_.f
2、Linux命令行下往版本库中添加新的文件
d IYi+ylQ0
+^QX ^p;M#@s0 svn add file
0m'_%q%sM7o+S:o+H051Testing软件测试网2vRNl-IHL
例如:svn add test.php(添加test.php)
^$a"B*sQ0
m~$x:Y\3c0 svn add *.php(添加当前目录下所有的php文件)
,|5zd%~cUo/Y8@9b6G0
*q0f-@ y!_o(C }CO0 3、Linux命令行下将改动的文件提交到版本库51Testing软件测试网"t._N4mT~%`4b
7P?'N:nE0 svn commit -m “LogMessage“ [-N] [--no-unlock] PATH(如果选择了保持锁,就使用–no-unlock开关)51Testing软件测试网Z(m*FGF#r`0d
51Testing软件测试网BX _&g~C1B
例如:svn commit -m “add test file for my test“ test.php
.C~5`'Eh({!L B3y D/UP0
$x3Qx k*r pEtv0 简写:svn ci
5j+fqg%t051Testing软件测试网p[Q^ F;@.~:P
4、Linux命令行下的加锁/解锁51Testing软件测试网*\3b5j8frbUR
Jst GG+[w\/U R0 svn lock -m “LockMessage“ [--force] PATH
'Jmb$\Mu8X0
*X W9l*P@0 例如:svn lock -m “lock test file“ test.php51Testing软件测试网 [f1Z2Y,yW$FOf6Q$b
51Testing软件测试网MO_,Q |iC
svn unlock PATH
Gy5FE,krB051Testing软件测试网0_/iAcT+?&tU
5、Linux命令行下更新到某个版本51Testing软件测试网.Mn#y%] U-as
51Testing软件测试网G4]4c O&wc C}+R9T
svn update -r m path
zT#W5w}v u0
(T:{m*cO?^(w9^0 例如:
,Y(J`M9I}*[051Testing软件测试网3Z%@WbKZ)Dp V
svn update如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本。51Testing软件测试网;}2RH)h5w&I
51Testing软件测试网7o*L8HdCx@$C
svn update -r 200 test.php(将版本库中的文件test.php还原到版本200)
$w*j[Ex*k#Yl0
*Ww'm*KoJ] JRp0 svn update test.php(更新,于版本库同步。如果在提交的时候提示过期的话,是因为冲突,需要先update,修改文件,然后清除svn resolved,最后再提交commit)
nZ S8G;Wo%]^5~0
mO;|Sh3Gd Y)g0 简写:svn up
Z"a)eHN"Bm5}@0
E;[p^Hbnn0 6、Linux命令行下查看文件或者目录状态
8Bu&v,o z ]051Testing软件测试网[TLT2c.JL0v
1)svn status path(目录下的文件和子目录的状态,正常状态不显示)51Testing软件测试网:c dz0\!_;y
D*V{TL8O?0 【?:不在svn的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K:被锁定】51Testing软件测试网"qS c#f^ws!O
,s@]y Uor ]7c0 2)svn status -v path(显示文件和子目录状态)51Testing软件测试网+i5]S(Z o R2jW
8h[^?YqKt0 第一列保持相同,第二列显示工作版本号,第三和第四列显示最后一次修改的版本号和修改人。51Testing软件测试网 nX#SyC*E-}g
%kp6II9k,[0@ i0 注:svn status、svn diff和 svn revert这三条命令在没有网络的情况下也可以执行的,原因是svn在本地的.svn中保留了本地版本的原始拷贝。
mb5xS/z1E0
`-|0LNT0 简写:svn st
^,do"hM1D\l-O#M0
T&M.m)];[3]R0 7、Linux命令行下删除文件51Testing软件测试网 E"AGM w@
51Testing软件测试网E5QE rn%K
svn delete path -m “delete test fle“51Testing软件测试网;t yp x'ZqQ
51Testing软件测试网 Rt;k*Cys`
例如:svn delete svn://192.168.1.1/pro/domain/test.php -m “delete test file”
$a I[t7vp051Testing软件测试网C4i:Q3O)o+g,A
或者直接svn delete test.php 然后再svn ci -m ‘delete test file‘,推荐使用这种51Testing软件测试网+|Q)Qq(E;hrT
51Testing软件测试网9lZS$^2N
简写:svn (del, remove, rm)51Testing软件测试网Y7] bN[1D3{vF+H"E;{
x?gah0 8、Linux命令行下查看日志51Testing软件测试网rA%q-~wZw
51Testing软件测试网$zT&w RZj:Z
svn log path51Testing软件测试网 ?Q"r$xI"u6?v7|e
2m-ntw3bHv!ldy9t0 例如:svn log test.php 显示这个文件的所有修改记录,及其版本号的变化
I E{/M$s gnR0
XL_mtL3A0 9、Linux命令行下查看文件详细信息51Testing软件测试网#G/Q8U.A+P ^6s&q S
}6yF L"^"nu:X0 svn info path
-L'_L8sOMJ6M0
@E BG-ts0 例如:svn info test.php51Testing软件测试网-e(]I-xc,l
QL0K.r?/\:^2h:|0 10、Linux命令行下比较差异51Testing软件测试网7c.T)JsE(hh O
51Testing软件测试网R3W%O3[?k/F
svn diff path(将修改的文件与基础版本比较)51Testing软件测试网~p8UL{x
1Ng)PYW$e7x/c,G!C0 例如:svn diff test.php
Y3Jl+RTe051Testing软件测试网Y|:|%i[
svn diff -r m:n path(对版本m和版本n比较差异)51Testing软件测试网wv/cIV%p:J
例如:svn diff -r 200:201 test.php51Testing软件测试网w-N-~w4}A ]*tm
51Testing软件测试网h4M1FK l
简写:svn di51Testing软件测试网*d6f0A~8`&_
51Testing软件测试网5]P8H%zIR#|l"b
11、Linux命令行下将两个版本之间的差异合并到当前文件51Testing软件测试网dzg|d XYs
g+R+x+AQ tf0 svn merge -r m:n path
[%\ CB3@'K\i{051Testing软件测试网p9EhN9V?Oq,Y
例如:svn merge -r 200:205 test.php(将版本200与205之间的差异合并到当前文件,但是一般都会产生冲突,需要处理一下)51Testing软件测试网@9E.jh#FR
51Testing软件测试网I,S/Ad0\4vj!hp
12、Linux命令行下SVN 帮助51Testing软件测试网2U*Z%T o$|I"c
Y"t"R[0R\M$]0 svn help51Testing软件测试网8~ ?'V5~r
L.l!F``4TE1j/Q0 svn help ci
J5B_n0I;wSa:|!]051Testing软件测试网0Di1F@,@:QK4R
以上是常用命令,下面写几个不经常用的51Testing软件测试网*XAL1U1Qod
%B.[$@ksF#OwwQ[0 13、Linux命令行下版本库下的文件和目录列表
x(o ?X2WPg|0
)dX/?{:L ^\0 svn list path
-F8p#Y u4rRm051Testing软件测试网xgY F:k[2S5A
显示path目录下的所有属于版本库的文件和目录51Testing软件测试网Q$cJ_"~q
5NGJ,J$U0 简写:svn ls51Testing软件测试网/Fj`t5p~7H+Of#h
51Testing软件测试网oodC#]YwF:_
14、Linux命令行下创建纳入版本控制下的新目录51Testing软件测试网6R2VH8?-p^ tW!G
'g/J?;SX Syo:v N0 svn mkdir: 创建纳入版本控制下的新目录。51Testing软件测试网l ^0E,k$A5fWae;J
51Testing软件测试网#].j-Hs9YpR
用法: 1、mkdir PATH…51Testing软件测试网'ZO(p6|@nKP#^
)ZjO+vO+d | @G0 2、mkdir URL…
?;t"SBd%n0
W _(U}{9k0 创建版本控制的目录。
[bo.EI/O051Testing软件测试网D V+[1o1?p
1、每一个以工作副本 PATH 指定的目录,都会创建在本地端,并且加入新增调度,以待下一次的提交。51Testing软件测试网!_n.{r] M"R
:f6VM$ZuoH`K$IK0 2、每个以URL指定的目录,都会透过立即提交于仓库中创建.在这两个情况下,所有的中间目录都必须事先存在。
L4hy0w@^051Testing软件测试网tDs(h Q5s3gf&G
15、Linux命令行下恢复本地修改
$Ae5q8X"H&P
51Testing软件测试网 V`4LV*_ycn
1、Linux命令行下将文件checkout到本地目录51Testing软件测试网r0vY+H4lCK\6A]z
"x U_1kW-V%rS9U wR0 svn checkout path(path是服务器上的目录)51Testing软件测试网9?6gxlf}!d}
51Testing软件测试网*[9|.{Pcxd-j
例如:svn checkout svn://192.168.1.1/pro/domain51Testing软件测试网bSZ [1d~
J2y(T&ghj0 简写:svn co
&D8b2r*f O?:_051Testing软件测试网's6S0z$_.f
2、Linux命令行下往版本库中添加新的文件
d IYi+ylQ0
+^QX ^p;M#@s0 svn add file
0m'_%q%sM7o+S:o+H051Testing软件测试网2vRNl-IHL
例如:svn add test.php(添加test.php)
^$a"B*sQ0
m~$x:Y\3c0 svn add *.php(添加当前目录下所有的php文件)
,|5zd%~cUo/Y8@9b6G0
*q0f-@ y!_o(C }CO0 3、Linux命令行下将改动的文件提交到版本库51Testing软件测试网"t._N4mT~%`4b
7P?'N:nE0 svn commit -m “LogMessage“ [-N] [--no-unlock] PATH(如果选择了保持锁,就使用–no-unlock开关)51Testing软件测试网Z(m*FGF#r`0d
51Testing软件测试网BX _&g~C1B
例如:svn commit -m “add test file for my test“ test.php
.C~5`'Eh({!L B3y D/UP0
$x3Qx k*r pEtv0 简写:svn ci
5j+fqg%t051Testing软件测试网p[Q^ F;@.~:P
4、Linux命令行下的加锁/解锁51Testing软件测试网*\3b5j8frbUR
Jst GG+[w\/U R0 svn lock -m “LockMessage“ [--force] PATH
'Jmb$\Mu8X0
*X W9l*P@0 例如:svn lock -m “lock test file“ test.php51Testing软件测试网 [f1Z2Y,yW$FOf6Q$b
51Testing软件测试网MO_,Q |iC
svn unlock PATH
Gy5FE,krB051Testing软件测试网0_/iAcT+?&tU
5、Linux命令行下更新到某个版本51Testing软件测试网.Mn#y%] U-as
51Testing软件测试网G4]4c O&wc C}+R9T
svn update -r m path
zT#W5w}v u0
(T:{m*cO?^(w9^0 例如:
,Y(J`M9I}*[051Testing软件测试网3Z%@WbKZ)Dp V
svn update如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本。51Testing软件测试网;}2RH)h5w&I
51Testing软件测试网7o*L8HdCx@$C
svn update -r 200 test.php(将版本库中的文件test.php还原到版本200)
$w*j[Ex*k#Yl0
*Ww'm*KoJ] JRp0 svn update test.php(更新,于版本库同步。如果在提交的时候提示过期的话,是因为冲突,需要先update,修改文件,然后清除svn resolved,最后再提交commit)
nZ S8G;Wo%]^5~0
mO;|Sh3Gd Y)g0 简写:svn up
Z"a)eHN"Bm5}@0
E;[p^Hbnn0 6、Linux命令行下查看文件或者目录状态
8Bu&v,o z ]051Testing软件测试网[TLT2c.JL0v
1)svn status path(目录下的文件和子目录的状态,正常状态不显示)51Testing软件测试网:c dz0\!_;y
D*V{TL8O?0 【?:不在svn的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K:被锁定】51Testing软件测试网"qS c#f^ws!O
,s@]y Uor ]7c0 2)svn status -v path(显示文件和子目录状态)51Testing软件测试网+i5]S(Z o R2jW
8h[^?YqKt0 第一列保持相同,第二列显示工作版本号,第三和第四列显示最后一次修改的版本号和修改人。51Testing软件测试网 nX#SyC*E-}g
%kp6II9k,[0@ i0 注:svn status、svn diff和 svn revert这三条命令在没有网络的情况下也可以执行的,原因是svn在本地的.svn中保留了本地版本的原始拷贝。
mb5xS/z1E0
`-|0LNT0 简写:svn st
^,do"hM1D\l-O#M0
T&M.m)];[3]R0 7、Linux命令行下删除文件51Testing软件测试网 E"AGM w@
51Testing软件测试网E5QE rn%K
svn delete path -m “delete test fle“51Testing软件测试网;t yp x'ZqQ
51Testing软件测试网 Rt;k*Cys`
例如:svn delete svn://192.168.1.1/pro/domain/test.php -m “delete test file”
$a I[t7vp051Testing软件测试网C4i:Q3O)o+g,A
或者直接svn delete test.php 然后再svn ci -m ‘delete test file‘,推荐使用这种51Testing软件测试网+|Q)Qq(E;hrT
51Testing软件测试网9lZS$^2N
简写:svn (del, remove, rm)51Testing软件测试网Y7] bN[1D3{vF+H"E;{
x?gah0 8、Linux命令行下查看日志51Testing软件测试网rA%q-~wZw
51Testing软件测试网$zT&w RZj:Z
svn log path51Testing软件测试网 ?Q"r$xI"u6?v7|e
2m-ntw3bHv!ldy9t0 例如:svn log test.php 显示这个文件的所有修改记录,及其版本号的变化
I E{/M$s gnR0
XL_mtL3A0 9、Linux命令行下查看文件详细信息51Testing软件测试网#G/Q8U.A+P ^6s&q S
}6yF L"^"nu:X0 svn info path
-L'_L8sOMJ6M0
@E BG-ts0 例如:svn info test.php51Testing软件测试网-e(]I-xc,l
QL0K.r?/\:^2h:|0 10、Linux命令行下比较差异51Testing软件测试网7c.T)JsE(hh O
51Testing软件测试网R3W%O3[?k/F
svn diff path(将修改的文件与基础版本比较)51Testing软件测试网~p8UL{x
1Ng)PYW$e7x/c,G!C0 例如:svn diff test.php
Y3Jl+RTe051Testing软件测试网Y|:|%i[
svn diff -r m:n path(对版本m和版本n比较差异)51Testing软件测试网wv/cIV%p:J
例如:svn diff -r 200:201 test.php51Testing软件测试网w-N-~w4}A ]*tm
51Testing软件测试网h4M1FK l
简写:svn di51Testing软件测试网*d6f0A~8`&_
51Testing软件测试网5]P8H%zIR#|l"b
11、Linux命令行下将两个版本之间的差异合并到当前文件51Testing软件测试网dzg|d XYs
g+R+x+AQ tf0 svn merge -r m:n path
[%\ CB3@'K\i{051Testing软件测试网p9EhN9V?Oq,Y
例如:svn merge -r 200:205 test.php(将版本200与205之间的差异合并到当前文件,但是一般都会产生冲突,需要处理一下)51Testing软件测试网@9E.jh#FR
51Testing软件测试网I,S/Ad0\4vj!hp
12、Linux命令行下SVN 帮助51Testing软件测试网2U*Z%T o$|I"c
Y"t"R[0R\M$]0 svn help51Testing软件测试网8~ ?'V5~r
L.l!F``4TE1j/Q0 svn help ci
J5B_n0I;wSa:|!]051Testing软件测试网0Di1F@,@:QK4R
以上是常用命令,下面写几个不经常用的51Testing软件测试网*XAL1U1Qod
%B.[$@ksF#OwwQ[0 13、Linux命令行下版本库下的文件和目录列表
x(o ?X2WPg|0
)dX/?{:L ^\0 svn list path
-F8p#Y u4rRm051Testing软件测试网xgY F:k[2S5A
显示path目录下的所有属于版本库的文件和目录51Testing软件测试网Q$cJ_"~q
5NGJ,J$U0 简写:svn ls51Testing软件测试网/Fj`t5p~7H+Of#h
51Testing软件测试网oodC#]YwF:_
14、Linux命令行下创建纳入版本控制下的新目录51Testing软件测试网6R2VH8?-p^ tW!G
'g/J?;SX Syo:v N0 svn mkdir: 创建纳入版本控制下的新目录。51Testing软件测试网l ^0E,k$A5fWae;J
51Testing软件测试网#].j-Hs9YpR
用法: 1、mkdir PATH…51Testing软件测试网'ZO(p6|@nKP#^
)ZjO+vO+d | @G0 2、mkdir URL…
?;t"SBd%n0
W _(U}{9k0 创建版本控制的目录。
[bo.EI/O051Testing软件测试网D V+[1o1?p
1、每一个以工作副本 PATH 指定的目录,都会创建在本地端,并且加入新增调度,以待下一次的提交。51Testing软件测试网!_n.{r] M"R
:f6VM$ZuoH`K$IK0 2、每个以URL指定的目录,都会透过立即提交于仓库中创建.在这两个情况下,所有的中间目录都必须事先存在。
L4hy0w@^051Testing软件测试网tDs(h Q5s3gf&G
15、Linux命令行下恢复本地修改
$Ae5q8X"H&P