svn命令

本文为yanjiangbo原创@2012-04-11,请尊重版权,转载请说明出处http://blog.csdn.com/yanjiangbo
  1. 将服务器上的文件或目录checkout到本地当前目录下(同时会建立一个隐藏文件夹记录版本信息)
    # svn checkout path [workcopy]
    -- svn checkout "https://svn.sinaapp.com/appname" --username bosco 然后会提示你输入密码(其中workcopy是可选的,如果省略,SVN则会默认将appname作为workcopy)
    -- svn co
  2. 获取服务器上的最新版本(此命令会导致本地没有提交的更改丢失,建议使用此命令前先用svn status查看一下本地拷贝状态)
    # svn update
    -- svn update(默认将当前目录及子目录下的所有文件都更新到最新版本)
    -- svn update -r 200 hello.c(将版本库中的hello.c还原到版本200)
    -- svn update hello.c(把此文件更新到最新版本)
    -- svn up
  3. 把非版本控制的本地文件添加到版本控制
    # svn add [something]
    -- svn add hello.c
    -- svn add dirA(添加dirA目录下的所有文件)
    -- svn add *.c(添加当前目录下的所有c文件)
  4. 把本地文件提交到版本库
    # svn commit -m "log"
    -- svn commit -m "here is log message"
    -- svn ci
  5. 删除文件/branch
    # svn delete [something]
    -- svn delete hello.c(然后在svn ci -m "delete hello.c",推荐这种方式)
    -- svn delete https://svnurl.com/branches/my_branch  -m "delete something"(直接从SVN仓库删除文件,慎用)
    -- svn (del/remove/rm)
    
  6. 查看文件详细信息
    # svn info path
    -- svn info hello.c
  7. 查看工作拷贝中的文件或目录状态(正常状态下不显示)
    # svn status [-v] [something]
    【?:不在svn的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K:被锁定】
    注:svn status、svn diff和svn revert这三条命令在没有网络的情况下也可以执行。原因是svn在本地的.svn中保留了本地版本的原始拷贝。
    -- svn st
  8. 查看SVN仓库日志信息
    # svn log path
  9. 取消对本地修改过但是没有被commit的文件的改动
    # svn revert [-R] something
    使用:当something为目录时,需要加上参数-R(Recursive递归),否则只会取消对something这个目录的改动。
    变通:当然在这种情况下也可以使用svn update命令来取消对之前的修改,但不建议使用。因为svn update会去连接仓库服务器,耗费时间。
    注意:svn revert本事是有固定的风险,因为它的目的是放弃未提交的修改,一旦你选择了恢复,subversion没有方法找回未提交的修改。同时它不会恢复被删除的目录。
  10. 提交回滚
    改动已经被提交(commit),在这种情况下,用svn merge命令来进行回滚。
    回滚的操作过程如下: 
      1) 保证我们拿到的是最新代码
         svn update 
         假设最新版本号是28
      2) 然后找出要回滚的确切版本号
         svn log [something]
         假设根据svn log日志查出要回滚的版本号是25,此处的something可以是文件、目录或整个项目,如果想要更详细的了解情况,可以使用svn diff -r 28:25 [something]
      3) 回滚到版本号25
         svn merge -r 28:25 something
         为了保险起见,再次确认回滚的结果。
         svn diff [something]
      4) 发现正确无误,提交回滚。
         svn commit -m "Revert revision from r28 to r25,because of ..."
         提交后版本变成了29。
    
    将以上操作总结为如下四步:
      a) svn update
      b) svn log,找到最新版本(latest revision)
      c) 找到自己想要回滚的版本号(rollbak revision)
      d) 用svn merge来回滚: svn merge -r : something
  11. 比较差异
    # svn diff path(将修改的文件与基础版本比较)
    -- svn diff hello.c
    -- svn diff -r 200:201 hello.c(对版本200和版本201比较差异)
    -- svn di
  12. 将两个版本之间的差异合并到当前文件
    # svn merge -r m:n path
    -- svn merge -r 200:205 helo.c(将版本200与205之间的差异合并到当前文件,但是一般都会产生冲突,需要处理一下)
  13. SVN帮助
    # svn help
    -- svn help ci
  14. 显示版本库下的文件和目录列表
    # svn list path(显示path目录下的所有属于版本库的文件和目录)
    -- svn ls
  15. 创建纳入版本控制下的新目录
    # svn mkdir path/url
    -- svn mkdir path(会创建在受svn控制的本地端,随着commit的提交而创建在服务器端)
    -- svn mkdir url(每个以URL指定的目录,都会立即提交于仓库中创建)
    注意:在这两个情况下,所有的中间目录都必须事先存在。
  16. 移除工作副本的目录或文件的“冲突”状态
    # svn resolved path
    注意: 本子命令不会依语法来解决冲突或是移除冲突标记;它只是移除冲突的相关文件,然后让 PATH 可以再次提交。
  17. 其他命令
    # svn lock test.php -m "lock test file" 
    # svn switch URL [path]
    # svn switch --relocate FROM TO [path]
    # svn cat 目标[@版本]
SVN命令中文完全帮助文档: http://svnbook.red-bean.com/index.zh.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值