SVN命令

SVN:


SVN可用的子命令: 


常用:
checkout (co) , commit (ci) , import , add , diff (di) , list (ls)  , log , update (up) , status (stat, st)


1. 导入数据到版本库
• svn import mytree file:///var/svn/newrepos/some/project -m "Initial import"
  --depth ARG : 限制操作深度是 ARG ('empty', 'files', 'immediates', 或 'infinity') . files是只导入文件,不包含目录。

import: 将未纳入版本控制的文件或目录树提交到版本库。
用法: import [PATH] URL

  递归地提交 PATH 的副本至 URL。
  如果省略 PATH,则默认为 “.”。
  父目录会根据需要在版本库内创建。
  如果 PATH 是目录,则其下的内容直接加入到 URL 指定的位置内。
  如果使用了 “--force”,那么不能纳入版本控制的项目,例如设备文件,管道等,会被忽略。


2. 初始化检出
• svn checkout(co) URL[@REV]... [PATH]
例如: svn checkout http://svn.collab.net/repos/svn/trunk
如果省略路径参数[PATH],则 URL 最末尾的目录名作为目标目录名。


3. 更新工作副本:
• svn update -r m [PATH...]
如果没有指定版本,则将工作副本更新到 HEAD 版本。否则同步到 -r 选项所指定的版本。

每更新一项就输出一行信息,使用首字符来报告执行的动作。这些字符的含义是: 

    A  已添加
    D  已删除
    U  已更新
    C  合并冲突
    G  合并成功
    E  已存在
    R  已替换

例如:
svn update 如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本。
svn update -r 200 test.php(将版本库中的文件test.php还原到版本200)


4. 把文件和目录纳入版本控制
• svn add foo
预定将文件、目录或者符号链foo添加到版本库,当你下次提交后,foo会成为其父目录
的一个子对象。注意,如果foo是目录,所有foo中的内容也会预定添加进去,如果你只
想添加foo本身,请使用--non-recursive (-N)参数。


5.检查你的修改
• svn status [PATH...]
未指定参数时,只显示本地修改的条目(没有网络访问)。
  使用 -q 时,只显示本地修改条目的摘要信息。
  使用 -u 时,增加工作版本和服务器上版本过期信息。
  使用 -v 时,显示每个条目的完整版本信息。
[?:不在svn的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K:被锁定]


6. 比较差异
• svn diff
svn diff path(将修改的文件与基础版本比较)
例如:svn diff test.php
svn diff -r m:n path(对版本m和版本n比较差异)
例如:svn diff -r 200:201 test.php


7. 提交你的修改
• svn commit
必须提供日志消息,但它可以是空的
例如:svn commit -m “add test file for my test“ test.php

8. 查看日志
• svn log [PATH]
使用 -v 打印附加信息, 使用 -r ARG 制定版本参数
注:本地提交后使用svn log,不会显示刚刚的提交日志,可使用svn log -r ARG或者svn update,svn log使其显示

查询某时间段的log: svn log -r {2015-05-27}:{2015-05-29} -v  :查的是27,28两天的


------------------------------------##分割线##---------------------------------------------


不常用:

1. 取消本地修改
• svn revert

2. 查看某个历史文件 
• svn cat -r ARG rules.txt

3. 查看目录文件
• svn list

4. 解决冲突
• svn resolve --accept mine-full sandwich.txt 丢弃新从服务器接收的变更,并只使用你查看文件的本地修改
• svn resolve --accept theirs-full sandwich.txt  丢弃你对查看文件的本地修改,只使用从服务器新接收的变更


手工修改冲突后:
svn resolve --accept working sandwich.txt
svn commit -m "Go ahead and use my version"


5. 信息
• svn info


4. 获得旧的版本库快照
除了以上的命令,你可以使用带参数--revision的svn update和svn checkout来使整个工作副本“回到过去”:
$ svn checkout -r 1729 # Checks out a new working copy at r1729
...
$ svn update -r 1729 # Updates an existing working copy to r1729


批量增加:
(测试可用)
svn add `svn st |grep ? |awk '{print $2}'`  


or 
(测试可用)
svn st | grep ? | sed "s/?//" |xargs svn add


批量删除:
svn st | grep ! |awk '{print $2}'|xargs svn del


   blame (praise, annotate, ann)
   changelist (cl)
   cleanup
   copy (cp)
   delete (del, remove, rm)
   export
  
   lock
   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
   switch (sw)
   unlock
   upgrade

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值