最近在Linux系统下玩一些svn的东西,感觉脑袋很乱, 于是整理了一下一些初学者必须弄明白的基本命令:

1. svn --version: 查看Linux系统下的svn client版本. Client端的版本应该与server端的版本保持一致,否则会出现一些bug, 比如说可能会出现不能svn commit的情况(真心花了好长时间才发现这个问题,真心是经验之谈,)。

  在client电脑上查看svn server 的版本的方法是在浏览器上输入"http://www.SERVER_NETWORK_ADDRESS.com/SVN_REPOS_ADDRESS/"。这个address可以在svn info命令下(Repository Root)找到。

2. svn co SERVER_PATH: 把目标服务器下的文件给check out(可以理解为下载)出来,到自己电脑。

  比如说check out了下列文件: a.txt, b.txt, c.txt, d.c,i.txt

3. 如何上传新的文件:

第一步: 在checkout的目录下创建一新的,要上传的本地文件  touch e.txt

第二步: svn add e.txt 出现结果“ A  e.txt”. A代表e.txt 预定加入(Add)到版本库(个人理解是把e.txt的信息加入到本地的.svn文件里面了,暂时还没有到svn server里面)。

第三步: svn commit -m "注释信息". 这时才把local的 e.txt 上传到svn server. "-m "注释信息"“是必须的,不能少,否则出错。

      也可以 svn commit e.txt -m "注释信息", 不过这是仅仅把刚才的e.txt 上传到svn server. 假如第一步,我们创建了两个文件e.txt 和 f.txt, 第二步我们add   e.txt, f.txt, 那么svn commit e.txt -m "注释" 只上传e.txt, 而svn commit -m "注释信息" 上传所有的added 的文件。

svn commit 简称 svn ci

4. 在上传文件后,如何删除文件:

第四步:svn delelte a.txt 出现结果”D a.txt“. D 代表a.txt 被预定从版本库删除(Del). 然后看到本地目录下,a.txt 消失了,被svn 删除了。

第五步:svn ci -m "注释信息", 把del信息传递到server, server 执行删除任务。

做两个实验:

a) 手动的右键在本地目录下删除b.txt, 然后执行svn ci, 结果没有任何响应。重新check out 一份整个目录(或者svn up),发现b.txt重新出现, 这表示不能傻乎乎的手动删除文件啊,无效的,一定遵循svn的规则(这一点非常重要,因为我们一些想当然的操作会导致一些不可预料的结果,经验之谈)

b) 没有网络的时候,svn add 和 svn del 可以操作,但svn commit 不能操作。说明,add 和 del 两个svn动作在本地操作,而commit是联网行为。

5. 当我们修改完了一个check out 的文件,比如说, 在c.txt加入一句“Hello World!”, 如何更新svn server 里面的c.txt?

  svn ci c.txt -m "modify the c.txt".

  总结,如果check out出来的文件,直接scn ci;如何某文件不是check out的文件,那么先需要svn add 然后在svn ci.

6. svn update -r VERSION path/filename: 更新到某一个版本(-r means revert). 注意到每一次我们svn ci,他都会有一个版本号.当我们debug里面的代码文件(比说d.c)无数遍后,发现最开始的代码最优雅,于是我们可以通过版本号恢复最初的设置:svn up -r 1232(最初的版本号) d.c. 但是其他a.txt,...文件还是最新版本,整个文件夹也是最新版本,只有d.c 是旧版本(有点绕,手动操作一下)。 那我们是不是要记录每一次的版本号呢?不用,svn log 会告诉我们不同时间的版本号,但是要写好每一次commit的注释信息,以便区分。

7. svn status path(目录下的文件和子目录的状态,正常状态不显示)

【?:不在svn的控制中(自己手动建立了一个文件,还没有加入到版本库,svn add 后, ?会变成A);M:内容被修改;C:发生冲突;A或D:预定加入或删除到版本库;K:被锁定】

8. svn log path: 显示每一次修改后的版本号和注释的信息

9. svn switch (sw) branch:把当前的branch转换到另外的branch. 因为很多人用一套svn server, 如果每个人都可以对Svn server 里面的代码随意改变的话,整个svn server的代码会很混乱。于是需要给每个人分配一个branch(甚至每个问题一个branch). 如果看当前的branch, 直接输入svn info,就很清楚啦。一般来说,我们最初check out 出来的branch叫做adb. 找到我们自己要工作的adb branch文件下的一些子目录,把adb branch switch 到我们的svn branch。需要practice.

note: 每次svn sw 之前,一定要svn ci 到svn server,否则下一次switch回来的时候,修改过的文件就不能svn ci 到server里面啦。(解决方法: 假如我们修改过i.txt, 在ci之前,我们sw到另外一个branch。 再sw回来,touch i.txt; svn revert i.txt;svn add i.txt; svn ci i.txt -m "recover the i.txt")

10. svn diff path: 比如, 在改完a.txt后,暂时还没ci, 直接svn diff, 就可以看见之前改了什么。如果在ci之后,可以比较用如下形式: svn diff -r m:n a.txt(对版本m和版本n比较差异). 一定要在当前working copy 里面执行svn diff 命令。注意adb branch 和working copy(branch)同一个revision. 所以我们可以通过svn diff 在adb branch 和 working  copy 的区别. 其中, adb revision 是svn log 命令下第一个revision, 并不是当前的revision(因为当前adb branch 和working copy(branch)同一个revision).

Confusing, right? We need spend time playing around with SVN to master it. Better luck!

svn 在linux 下的一些常用命令的更多相关文章

  1. Linux下Vim工具常用命令

    原文地址: http://www.cnblogs.com/lizhenghn/p/3675011.html 在linux下做开发,甚至是只做管理维护工作,也少不了Vim的使用.作为一个新手,我也是刚刚 ...

  2. Linux下C++开发常用命令

    本页面记录本人在Linux下进行C++开发时使用的常用命令,注意这里不包括比如ls,mv等linux命令,这里会持续更新.首先假设你只有一个源程序文件,叫vec.cpp,编译后的可执行程序叫vec(本 ...

  3. Linux下的一些常用命令(一)

    在Linux环境下敲各种命令是再正常不过了,尤其是现在大多少服务器均为Linux系统,但是我又记不住这么多命令,只是偶尔在项目做完发布到服务器上的时候会涉及到,所以在网上找了一些命令,在此记录一下~ ...

  4. 查看Linux下系统资源占用常用命令(top、free、uptime)

    本文介绍下,在linux中查看系统资源占用的三个命令:top.free.uptime,通过实例学习下它们的用法,有需要的朋友参考下 一,top命令 1.作用top命令用来显示执行中的程序进程,使用权限 ...

  5. 总结Linux 下Redis 操作常用命令(转)

    Redis的配置 Linux下安装 ]# wget http://download.redis.io/releases/redis-2.8.17.tar.gz ]# tar xzf redis-2.8 ...

  6. 查看Linux下系统资源占用常用命令

    一 top命令 1.作用top命令用来显示执行中的程序进程,使用权限是所有用户. 2.格式top [-] [d delay] [q] [c] [S] [s] [i] [n] 3.主要参数d:指定更新的 ...

  7. Linux下安装maven-及常用命令

        Linux下安装maven1.首先到Maven官网下载安装文件,目前最新版本为3.0.3,下载文件为apache-maven-3.0.3-bin.tar.gz,下载可以使用wget命令: 2. ...

  8. Linux下一些简单常用命令的总结

    Cent os常用命令 查看当前目录信息: l s a:显示所有包括隐藏文件 l :列表显示数据 h:显示数据大小 查看命令帮助: XXX --help[比如:l shel p] 清除控制台信息: c ...

  9. linux下mysql的常用命令

    更改mysql数据库root的密码 首次进入数据库是不用密码的: [root@localhost ~]# /usr/local/mysql/bin/mysql -uroot Welcome to th ...

随机推荐

  1. iOS Safari 上加载的最大的图片尺寸

    做WAP端项目时发现, 写css代码显示图片, 却显示不出.或用canvas 来加载图片的某一部分的时候显示不出, 代码如下: background: url() no-repeat -1000px ...

  2. SQL Server 临时表的删除

    --临时表与一般的表不同,它是保存到tempDb表中.临时表的表名与你所建的表名也不一样,因为他要为不同人的相同操作创建不同的临时表. --1.错误的删除操作: --错误的临时表删除操作,因为所在数据 ...

  3. CSS实现DIV超长截断,并显示...

    DIV显示内容有时会超长,并把页面撑的很难看, 以前的做法是在JS中,或者后台判断其长度,过长就截断, 但由于中英文数字展示的宽度并不一样,截断的长度也就只能取最小值, 展示的效果也不好.利用CSS提 ...

  4. unity 3d孤岛求生案例代码解析

    这是第一人称控制器脚本,如果把摄像机放在胶囊体后面感觉就是第三人称了啊. #pragma strict var speed : float = 6.0; var jumpspeed: float = ...

  5. linux开机随笔

    (1),linux开机流程: 固件是在软件与硬件之间的那部分,他们既不叫做硬件也不叫做软件, 开机自检  ,就是  在你按下开机键时,电脑就会自动检查你的硬盘  内存 cpu等器件, 那个CMOS是固 ...

  6. android 设置状态栏与标题背景颜色一致

    必须在Android4.4以上版本才能设置状态栏颜色: 一.在单个Activity里面,设置状态栏的背景: 效果: 1.在Activity的布局根文件中添加属性: android:fitsSystem ...

  7. oracle 学习笔记2

    1.oracle 中rowid和rownum的区别 oracle 数据库中,每一行都有一个唯一行的标识符,ROWID,数据库内部用来存储行的物理位置.ROWID是一个18位数字,采用base-64编码 ...

  8. WizNote for linux installation

    源一:没有用处 官网链接http://www.wiznote.com/download-wiznote-for-Linux. 源二:提供了源及安装方法 Fedora 中文社区软件源,具体位置在这里. ...

  9. linux whoami命令

    whoami显示的是当前"操作用户"的用户名.

  10. jquery制作省份城市地区多选控件总结

    1.弹出的选择框有jquery直接放在body后面,以position:absolute绝对定位,top,left处理位置. 如果想让该选择框位于点选元素下面,则获取点选元素位置 var target ...