zoukankan      html  css  js  c++  java
  • SVN 命令行的使用

    大多数时候我们用TortoiseSVN作为客户端,其实SVN提供了强大的客户端命令行工具,和Git差不不多。

    1. 查看工作副本修改的整体状况。
    $ svn status
    ?       scratch.c
    A       stuff/loot
    A       stuff/loot/new.c
    D       stuff/old.c
    M       bar.c
    $

    ?表示没有加入版本控制,A,D,M分别表示增加,删除,修改。

    svn status 支持选项 --verbose (-v), 带上该选项后, 命令会输出当前目录中每一项的 状态, 即使是未被修改的项目:

    $ svn status -v
    M               44        23    sally     README
                    44        30    sally     INSTALL
    M               44        20    harry     bar.c
                    44        18    ira       stuff
                    44        35    harry     stuff/trout.c
    D               44        19    ira       stuff/fish.c
                    44        21    sally     stuff/things
    A                0         ?     ?        stuff/things/bloo.h
                    44        36    harry     stuff/things/gloo.c
    

    可以给 svn status 带上选项 --show-updates (-u), 这样 Subversion 就会和仓库通信, 输出工作副本中已过时的项目:

    $ svn status -u -v
    M      *        44        23    sally     README
    M               44        20    harry     bar.c
           *        44        35    harry     stuff/trout.c
    D               44        19    ira       stuff/fish.c
    A                0         ?     ?        stuff/things/bloo.h
    Status against revision:   46

    Status against revision: 46*表示远程仓库的文件已经发生修改,如果合并会可能发生冲突。

    2.  撤销工作副本的修改
    $ svn revert 2.txt
    已恢复“2.txt”
    

      svn revert 提供了一个很好的补救机会, 否则的话, 用户就得花费大量的时间, 自己一点一点地手工撤消修改, 又或 者采用一个更麻烦的做法, 直接删除工作副本, 然后重新从服务器上检出一个 干净的工作副本.

    3. 解决冲突
    3.1 手动解决冲突

    首先看一下发生冲突后的文件内容:

    $ cat sandwich.txt
    Top piece of bread
    Mayonnaise
    Lettuce
    Tomato
    Provolone
    <<<<<<< .mine
    Salami
    Mortadella
    Prosciutto
    =======
    Sauerkraut
    Grilled Chicken
    >>>>>>> .r2
    Creole Mustard
    Bottom piece of bread
    

     分别由小于号, 等号和大于号组成的行是冲突标记, 它们不是冲突数据 的一部分, 用户通常只需要确保在提交前把它们都删除掉即可. 前两个标记之 间的文本是用户的本地修改.

    <<<<<<< .mine
    Salami
    Mortadella
    Prosciutto
    =======
    

      后两个标记之间的内容是别人提交的修改:

    =======
    Sauerkraut
    Grilled Chicken
    >>>>>>> .r2
    

      这里去掉别人提交的内容

    Top piece of bread
    Mayonnaise
    Lettuce
    Tomato
    Provolone
    Salami
    Mortadella
    Prosciutto
    Creole Mustard
    Bottom piece of bread
    

      使用命令 svn resolve 移除文件的冲突状态后, 接下来就可以提交修改了:

    $ svn resolve --accept working sandwich.txt
    Resolved conflicted state of 'sandwich.txt'
    $ svn commit -m "Go ahead and use my sandwich, discarding Sally's edits."
    

      --accept=working 告诉 Subversion 把文件的当前内容作为冲突解决后的状态,svn resolve 会删除目录下的三个临时文件, 将用户指定的 文件版本作为冲突解决后的最终版。

    3.2 全丢弃自己的修改
    svn resolve --accept theirs-full CONFLICTED-PATH 
    3.3 丢弃当前的所有修改
    $ svn revert  filename
    

      



  • 相关阅读:
    第13组_16通信3班_045_OSPFv3作业
    RIPng配置(第十三组)
    基于IPV6的数据包分析(更新拓扑加入了linux主机和抓取133icmp包)(第十三组)
    vmware vsphere powercli 因为在此系统中禁止执行脚本
    vmware virtual machine must be running in order to be migrated
    flashback transaction闪回事务查询
    oracle 闪回功能详解
    linux下修改/dev/shm tmpfs文件系统大小
    vmware虚拟机guest系统重启后获得169.254.X.X的ip解决方法
    一键部署 PPTP server
  • 原文地址:https://www.cnblogs.com/zydev/p/9025979.html
Copyright © 2011-2022 走看看