好用的shell命令和常用的SVN命令记录
2016年06月16日 Linux

常用的命令行SVN命令

现在的版本管理工具都有相当人性化的GUI版本,无论是免费的收费的,都做得相当好,点几个按钮,选几个文件,提交,回退,更新,一步就完成了,但是最近在公司的Mac下(低配Mac mini,你懂的…),很多GUI版本的工具都非常慢,卡顿非常严重,而且对SVN的外链(external)支持不好(像CornerStone这个SVN的GUI工具),也就是在版本管理工具的内部的文件视图里,看不到external属性下的文件,只能看到最上级的目录,而实际的目录中却有对应的文件,只是不能在GUI的版本工具中进行操作,这个情况下就只能在对应的外链目录下通过终端进行提交了。一段时间下来,发现一堆命令都忘了,只会在GUI工具上点来点去,一旦遇到上面那种情况,就得傻眼半天,这里记录一下常用的SVN命令行命令。

  1. 检出(Check Out)

    svn checkout

    ex: svn checkout svn://dev.bugcode.net/demo/svn_demo

    short: svn co

  2. 更新文件

    svn update [-r version_code]

    svn update # 直接更新当前目录和子目录的所有文件

    ex: svn update -r 1028 demo.c # 把当前目录下的demo.c还原到版本号是1028的版本

    svn update # 更新指定文件到最新

    short: svn up

  3. 向版本库添加文件,支持通配符

    svn add

    ex: svn add demo.swift / svn add *.cpp

  4. 提交文件

    svn commit -m “commit-log”

    ex: svn commit -m “commit message for svn” ./demo_dir/demo.c

    short: svn ci

  5. 回退文件(直接解决冲突状态,但不会回退被删除的文件)

    svn revert

    ex: svn revert ./demo/demo.c

  6. 删除文件

    svn delete -m “delete message”

    ex: svn delete svn://dev.bugcode.net/demo/demo_need_file -m “delete message for svn” # 相当于直接删除版本库里的文件

    ex svn delete ./demo/demo_need_file -> svn commit -m “delete message” # 先删除本地副本中的对应文件,再提交

    short: svn delete / svn remove / svn rm

  7. 查看log

    svn log

  8. 比较差异

    svn diff

    svn diff version1:version2

    ex: svn diff ./demo.c / svn diff 1028:1000 ./demo.c

    short: svn di

  9. 显示属于版本库管理的目录和文件,直接创建属于版本库管理的目录

    svn list

    ex: svn list ./

    short: svn ls

    svn mkdir

    ex svn mkdir test_dir

  10. 解决冲突,这里的命令只是用来移除对应文件的冲突状态(删除对应的标记冲突的文件),具体的文件冲突还是需要手动去文件解决

    svn resolved

    ex: svn resolved ./conflicted_file_name

有用的shell命令

shell命令天天在用,除了ls,cat,pwd,cp,mv类似这些常用的,有些提高效率的命令用起来还是可以缩短不少输入时间的。脑袋不好使这里一起记录一下

  1. zsh下的进入当前目录下的前二级目录,bash没有!

    cd …

  2. 都知道 ~ 是home目录,但是cd之后什么也不加也是相当于 cd ~

  3. 中划线,直接cd -可以进入上次cd进入的目录,比如现在test目录进入test目录下的next目录,这时执行cd -,就会再回到test目录下,再执行cd -就又回到test目录下的next目录下了。

  4. 快捷键

    • ctrl + a: 回到行首
    • ctrl + e: 去到行尾
    • ctrl + u / ctrl + y: undo / redo
    • ctrl + z: 当前正在运行的程序放到后台执行
  5. $? 获取上一个命令的返回结果,比如

    1
    2
    3
    4
    5
    6
    #include <stdio.h>
    int main(int argc, char **argv)
    {
    printf("Terminal output test.")
    return 0;
    }

    编译后生成的可执行文件运行后,想看一下main函数的返回值,就可以在文件运行后,使用$?来查看return的具体值。

  6. !! 输出上一次命令,并执行

  7. !$ 输出上一次命令的最后一个字符串

  8. 快速创建文件,touch file 或者 > file(更短更快)

  9. fgrep “string” 快速查找当前目录包含string这个串的文件并输出,加-r选项可以查所有子目录

end 生活不只有眼前的苟且,还有远方的苟且。