本文为yanjiangbo原创@2012-04-11,请尊重版权,转载请说明出处http://blog.csdn.com/yanjiangbo
- 将服务器上的文件或目录checkout到本地当前目录下(同时会建立一个隐藏文件夹记录版本信息)
# svn checkout path [workcopy] -- svn checkout "https://svn.sinaapp.com/appname" --username bosco 然后会提示你输入密码(其中workcopy是可选的,如果省略,SVN则会默认将appname作为workcopy) -- svn co
- 获取服务器上的最新版本(此命令会导致本地没有提交的更改丢失,建议使用此命令前先用svn status查看一下本地拷贝状态)
# svn update -- svn update(默认将当前目录及子目录下的所有文件都更新到最新版本) -- svn update -r 200 hello.c(将版本库中的hello.c还原到版本200) -- svn update hello.c(把此文件更新到最新版本) -- svn up
- 把非版本控制的本地文件添加到版本控制
# svn add [something] -- svn add hello.c -- svn add dirA(添加dirA目录下的所有文件) -- svn add *.c(添加当前目录下的所有c文件)
- 把本地文件提交到版本库
# svn commit -m "log" -- svn commit -m "here is log message" -- svn ci
- 删除文件/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)
- 查看文件详细信息
# svn info path -- svn info hello.c
- 查看工作拷贝中的文件或目录状态(正常状态下不显示)
# svn status [-v] [something] 【?:不在svn的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K:被锁定】 注:svn status、svn diff和svn revert这三条命令在没有网络的情况下也可以执行。原因是svn在本地的.svn中保留了本地版本的原始拷贝。 -- svn st
- 查看SVN仓库日志信息
# svn log path
- 取消对本地修改过但是没有被commit的文件的改动
# svn revert [-R] something 使用:当something为目录时,需要加上参数-R(Recursive递归),否则只会取消对something这个目录的改动。 变通:当然在这种情况下也可以使用svn update命令来取消对之前的修改,但不建议使用。因为svn update会去连接仓库服务器,耗费时间。 注意:svn revert本事是有固定的风险,因为它的目的是放弃未提交的修改,一旦你选择了恢复,subversion没有方法找回未提交的修改。同时它不会恢复被删除的目录。
- 提交回滚
改动已经被提交(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
- 比较差异
# svn diff path(将修改的文件与基础版本比较) -- svn diff hello.c -- svn diff -r 200:201 hello.c(对版本200和版本201比较差异) -- svn di
- 将两个版本之间的差异合并到当前文件
# svn merge -r m:n path -- svn merge -r 200:205 helo.c(将版本200与205之间的差异合并到当前文件,但是一般都会产生冲突,需要处理一下)
- SVN帮助
# svn help -- svn help ci
- 显示版本库下的文件和目录列表
# svn list path(显示path目录下的所有属于版本库的文件和目录) -- svn ls
- 创建纳入版本控制下的新目录
# svn mkdir path/url -- svn mkdir path(会创建在受svn控制的本地端,随着commit的提交而创建在服务器端) -- svn mkdir url(每个以URL指定的目录,都会立即提交于仓库中创建) 注意:在这两个情况下,所有的中间目录都必须事先存在。
- 移除工作副本的目录或文件的“冲突”状态
# svn resolved path 注意: 本子命令不会依语法来解决冲突或是移除冲突标记;它只是移除冲突的相关文件,然后让 PATH 可以再次提交。
- 其他命令
# svn lock test.php -m "lock test file" # svn switch URL [path] # svn switch --relocate FROM TO [path] # svn cat 目标[@版本]