最近在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. vim的一些配置

    所有用户的共同配置位于 /etc/vimrc 或者 /ect/vim/vimrcz中,可能还会有其他的配置文件,例如vimrc.tiny,具体的应用场景文件内会有说明. 某个特定用户的vim配置位于 ...

  2. Android笔记之——线程

    Java: package com.example.test_ui_thread01;import android.support.v7.app.AppCompatActivity;import an ...

  3. Rust的力量

    大约3年前,学习了一个星期的Go语言,然后就没有然后了. Go里面的有些东西设计很新颖,但是缺点也很明显. 上个周末,看了2个小时的Rust,我觉得Rust完全完胜Go语言. 再看Rust的定位,可以 ...

  4. Java垃圾回收机制 入门

    对于Java虚拟机的了解,我认为是一个Java程序员已经入门的重要标志,而JVM中的垃圾回收机制(Garbage Collection,简称GC)又是JVM中的重点,所以hans在这里用篇文章时间和大 ...

  5. Java 占位符使用 和 修饰符

    Java中占位符的使用 String类的format()方法 String类的format()方法用于创建格式化的字符串以及连接多个字符串对象.熟悉C语言的同学应该记得C语言的sprintf()方法, ...

  6. 关于apache httpd.conf脚本的理解

    新人一枚,这两天一直在研究lamp的搭建,感觉自己对apache理解的不够深彻,决定写这一篇(翻译)httpd.conf文件 未完待续 cat /usr/local/apache/conf/httpd ...

  7. Windows 2012 R2图标以及字体颜色发生变化更改成默认设置

    1. 在桌面按"Win+R",然后输出regedit.2. 定位到HKEY_CURRENT_USER\Control panel\Colors3. 对照下面提供给您的初始化颜色的注 ...

  8. maven css/js 压缩配置

    <plugin>               <groupId>net.alchim31.maven</groupId>               <art ...

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

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

  10. nginx php rewrite配置

    server { listen 80; server_name xxx.cn www.xxx.cn; index index.html index.htm index.php; root /data/ ...