linux下svn命令⼤全
1.svnadmin create path 创建⼀个新的版本库,(path为你想创建版本库的⽬录路径,如创建版本库⽬录为cellsms:svnadmincreate/home/c7mon/svn/cellsms)。
2.svn mkdir URL 创建⽬录,向版本库新添加⼀个⽬录,(⽴即提交,所以需要⽇志信息):如新增trunk⽬录:svn mkdir file:///home/c7mon/svn/cellsms/trunk -m \"此⽬录的说明信息\"。
svn mkdir newdir 在⼯作拷贝下新建⼀个⽬录,如新增hello⽬录,即在⼯作拷贝(svn checkout数据的⽬录下):svn mkdir hello。
3.svn import URL 向版本库导⼊数据,需要⽇志信息。如导⼊当前⽬录下wwm⽬录到版本库trunk⽬录中:svn importfile:///home/c7mon/svn/cellsms/trunk/wwm-m \"⽇志说明信息\"
4.svn checkout URL 导出⼀个⼯作拷贝,cd到你要存放导出数据的⽬录,如导出wwm⽬录:svn checkout
file:///home/c7mon/svn/cellsms/trunk/wwm,或 svn checkoutsvn://192.168.3.33/home/c7mon/svn/cellsms/trunk/wwm。svn://⽅式需要⽤户名和密码,(svn co为svn checkout简写)。
5.svn commit 提交⼯作拷贝的修改到版本库中,如对wwm下的⽂件进⾏修改后提交:svn commit -m \"\可以为空,最好加上⽇志说明。svn ci 为其简写。
6.svn add file/dir 新添加的⽂件或⽬录,此处dir为linux命令mkdir在⼯作拷贝下创建的⽬录,不是svn mkdir命令创建的⽬录,所以需要svnadd预订添加。svn add需要在⼯作拷贝下执⾏,如在4中svn co出的⼯作拷贝⽬录wwm下新添加了hehe.c:svn add hehe.c。 然后执⾏svncommit提交到版本库。
7.svn copy URL URL 完全的服务器端拷贝,通常⽤在分⽀和标签。 如wwm项⽬完成后发布版本wwm_1.0:
svn copy file:///home/c7mon/svn/cellsms/trunk/wwm file:///home/c7mon/svn/cellsms/trunk/tags/wwm_1.0 -m \"it's the wwm_1.0 foranhui\" 。 或 svncopy
svn://192.168.3.33/home/c7mon/svn/cellsms/trunk/wwmsvn://192.168.3.33/home/c7mon/svn/cellsms/trunk/tags/wwm_1.0 -m \"it'sthewwm_1.0 for anhui\"。(tags⽬录需提前在版本库中建好。)
如果wwm_1.0版本出现BUG,可以拷贝tags⽬录下的wwm_1.0到建好的branches⽬录下,然后svn co 出branches下的wwm_1.0进⾏修改。这样trunk⽬录下的wwm可以继续进⾏开发,⽽不会与branches下1.0版本的修改产⽣冲突。当branches下的wwm_1.0版本修复bug后,可以使⽤svn merge命令,将修改的部分合并到trunk下的wwm⼯程中。
8.svn list URL 显⽰path⽬录下的所有属于版本库的⽂件和⽬录(简写 svn ls) 如列出cellsms下⽬录信息:svn list svn://192.168.3.33/home/c7mon/svn/cellsms9.svn info URL 显⽰本地或远程条⽬的信息。
如查看cellsms下信息:svn infosvn://192.168.3.33/home/c7mon/svn/cellsms10.svn log URL 查看版本⽇志信息。
如查看cellsms下所有版本信息:svn log svn://192.168.3.33/home/c7mon/svn/cellsms
11.svn mergeURL@version URL 合并,应⽤两组源⽂件的差别到⼯作拷贝路径。
假设情景:trunk/smpp trunk为smpp项⽬开发的主⽬录,当开发完成时,smpp被拷贝打标签到tags/smpp_1.0.0,这⾥smpp_1.0.0为发布版
本。此时trunk下smpp继续进⾏smpp第⼆版本的开发,这时发现发布的smpp_1.0.0版本有BUG需要修改,于是拷贝tags下的smpp_1.0.0到分⽀⽬录branches/smpp_1.0.0进⾏修改。当改好smpp_1.0.0后,问题来了,我们此刻需要把修改好后的smpp_1.0.0合并到此时正在trunk⽬录下正在开发smpp中。解决:
(1)⼀个URL,为起始状态,其后的@version,表⽰取版本号,这个version就是svn cp到branches成功之后的那个版本。第⼆个URL,为最终状态,既修改好的smpp_1.0.0的URL。 其实就是左边和右边做了 ⼀个diff,应⽤到当前⼯作区⽬录,也就是trunk的⼯作拷贝。此时 $svn status 就可以看到变化了
(2)我们需要知道smpp_1.0.0被拷贝到branches⽬录时得版本号,命令为:svnlog -stop-on-copy svn://192.168.3.33/home/c7mon/svn/cellsms/branches/
(3)此命令需要在合并到trunk的⼯作拷贝中执⾏:(可以加上--dry-run选项模拟merge,但不真正的去做)Svn merge
svn://192.168.3.33/home/c7mon/svn/cellsms/branches/mscid_1.0.0@18svn://192.168.3.33/home/c7mon/svn/cellsms/branches/mscid_1.0.0
(4)svn commit 提交。(是在trunk的⼯作拷贝中)
12.svn delete path/URL从⼯作拷贝或版本库删除⼀个项⽬。
如想删除⼯作拷贝smpp下的main.c⽂件: svndelete main.c (需cd到smpp的⼯作拷贝的⽬录下)。然后 svn commit提交。 如想删除trunk/smpp/main.c⽂件:svn delete –m “delete the main.c of smpp”
Svn://192.168.3.33/home/c7mon/svn/cellsms/smpp/main.c(需要⽇志信息,即-m “”)。然后svn commit提交。
13.svn revert取消所有的本地编辑。
如12中,你执⾏了svn delete后,想取消其delete操作,那么你在svn commit提交之前执⾏本命令。例如:svn revert main.c。
14. svn update更新你的⼯作拷贝。
如你的⼯作拷贝为trunk下smpp,现在你想将修改的smpp_1.0.0的内容更新到你当前的⼯作拷贝中,你可以:svn update –rversion(version为smpp_1.0.0版本号)。如果你执⾏:svn update命令,则默认更新最新的版本内容到当前⼯作拷贝中。
15.svn status打印⼯作拷贝⽂件和⽬录的状态。 如打印当前⼯作拷贝的状态:svnstatus –u。
16.svn lock 锁定⼯作拷贝中⽂件,避免其他⽤户修改导致冲突。 如:svn lock main.c(需要在⼯作拷贝中执⾏)。
如果有其他⽤户已锁定,你可以强制加锁,需要选项 --force。17. svn unlock 解除锁定操作,如svn unlock main.c。
18.svn help 执⾏此命令可以查看svn所有的⼦命令。
svn ⼦命令 --help,查看⼦命令选项信息,如:svn lock - -help。
1、将⽂件checkout到本地⽬录
svn checkout path(path是服务器上的⽬录) 例如:svn checkout svn://192.168.1.1/pro/domain 简写:svn co
2、往版本库中添加新的⽂件 svn add file
例如:svn add test.php(添加test.php)
svn add *.php(添加当前⽬录下所有的php⽂件) 3、将改动的⽂件提交到版本库
svn commit -m “LogMessage“ [-N] [--no-unlock] PATH(如果选择了保持锁,就使⽤–no-unlock开关) 例如:svn commit -m “add test file for my test“ test.php 简写:svn ci 4、加锁/解锁
svn lock -m “LockMessage“ [--force] PATH 例如:svn lock -m “lock test file“ test.php svn unlock PATH 5、更新到某个版本 svn update -r m path 例如:
svn update如果后⾯没有⽬录,默认将当前⽬录以及⼦⽬录下的所有⽂件都更新到最新版本。 svn update -r 200 test.php(将版本库中的⽂件test.php还原到版本200)
svn update test.php(更新,于版本库同步。如果在提交的时候提⽰过期的话,是因为冲突,需要先update,修改⽂件,然后清除svnresolved,最后再提交commit) 简写:svn up
6、查看⽂件或者⽬录状态
1)svn status path(⽬录下的⽂件和⼦⽬录的状态,正常状态不显⽰)
【?:不在svn的控制中;M:内容被修改;C:发⽣冲突;A:预定加⼊到版本库;K:被锁定】 2)svn status -v path(显⽰⽂件和⼦⽬录状态)
第⼀列保持相同,第⼆列显⽰⼯作版本号,第三和第四列显⽰最后⼀次修改的版本号和修改⼈。
注:svn status、svn diff和 svn revert这三条命令在没有⽹络的情况下也可以执⾏的,原因是svn在本地的.svn中保留了本地版本的原始拷贝。
简写:svn st 7、删除⽂件
svn delete path -m “delete test fle“
例如:svn delete svn://192.168.1.1/pro/domain/test.php -m “delete test file” 或者直接svn delete test.php 然后再svn ci -m ‘delete test file‘,推荐使⽤这种 简写:svn (del, remove, rm) 8、查看⽇志 svn log path
例如:svn log test.php 显⽰这个⽂件的所有修改记录,及其版本号的变化 9、查看⽂件详细信息 svn info path
例如:svn info test.php 10、⽐较差异
svn diff path(将修改的⽂件与基础版本⽐较) 例如:svn diff test.php
svn diff -r m:n path(对版本m和版本n⽐较差异) 例如:svn diff -r 200:201 test.php 简写:svn di
11、将两个版本之间的差异合并到当前⽂件 svn merge -r m:n path
例如:svn merge -r 200:205 test.php(将版本200与205之间的差异合并到当前⽂件,但是⼀般都会产⽣冲突,需要处理⼀下) 12、SVN 帮助 svn help svn help ci
—————————————————————————— 以上是常⽤命令,下⾯写⼏个不经常⽤的
—————————————————————————— 13、版本库下的⽂件和⽬录列表 svn list path
显⽰path⽬录下的所有属于版本库的⽂件和⽬录 简写:svn ls
14、创建纳⼊版本控制下的新⽬录
svn mkdir: 创建纳⼊版本控制下的新⽬录。 ⽤法: 1、mkdir PATH… 2、mkdir URL…
创建版本控制的⽬录。
1、每⼀个以⼯作副本 PATH 指定的⽬录,都会创建在本地端,并且加⼊新增 调度,以待下⼀次的提交。
2、每个以URL指定的⽬录,都会透过⽴即提交于仓库中创建。 在这两个情况下,所有的中间⽬录都必须事先存在。 15、恢复本地修改
svn revert: 恢复原始未改变的⼯作副本⽂件 (恢复⼤部份的本地修改)。revert: ⽤法: revert PATH…
注意: 本⼦命令不会存取⽹络,并且会解除冲突的状况。但是它不会恢复 被删除的⽬录
16、代码库URL变更
svn switch (sw): 更新⼯作副本⾄不同的URL。 ⽤法: 1、switch URL [PATH]
2、switch –relocate FROM TO [PATH...]
1、更新你的⼯作副本,映射到⼀个新的URL,其⾏为跟“svn update”很像,也会将 服务器上⽂件与本地⽂件合并。这是将⼯作副本对应到同⼀仓库中某个分⽀或者标记的 ⽅法。
2、改写⼯作副本的URL元数据,以反映单纯的URL上的改变。当仓库的根URL变动 (⽐如⽅案名或是主机名称变动),但是⼯作副本仍旧对映到同⼀仓库的同⼀⽬录时使⽤ 这个命令更新⼯作副本与仓库的对应关系。 17、解决冲突
svn resolved: 移除⼯作副本的⽬录或⽂件的“冲突”状态。 ⽤法: resolved PATH…
注意: 本⼦命令不会依语法来解决冲突或是移除冲突标记;它只是移除冲突的 相关⽂件,然后让 PATH 可以再次提交。 18、输出指定⽂件或URL的内容。
svn cat ⽬标[@版本]…如果指定了版本,将从指定的版本开始查找。
svn cat -r PREV filename > filename (PREV 是上⼀版本,也可以写具体版本号,这样输出结果是可以提交的)
因篇幅问题不能全部显示,请点此查看更多更全内容