• svn 常用命令:


     (确实不想用svn,奈何一些项目,唉...)

    一、取出代码:

    svn checkout https://****/branches/svn_test_r201

    二、创建分支:

    例如:创建新分支 branches/svn_test_r201 (svn_test_r202,这个目录不要提前创建

    svn copy https://****/branches/svn_test_r201 https://****/branches/svn_test_r202

    三、svn add

    把readme文件纳入到版本控制中
    svn add readme
    
    如果add文件夹,则默认把该文件夹下未纳入版本控制的文件一并纳入控制
    svn add doc
    
    如果只想把目录纳入控制,而不想把所有该目录下的文件纳入控制,可以增加non-recursive
    svn add doc --non-recursive
    
    一次性增加所有(这种情况下会排除non-recursive的doc目录下的文件)
    svn add *
    
    把doc下的文件也一并纳入控制,增加force参数
    svn add * --force
    
    遍历当前目录下的所有未添加的文件,添加到版本控制中
    svn add . --no-ignore --force

    四、svn commit

    添加文件
    svn commit -m "add file readme"
    or
    svn ci -m "add file readme"

    五、log 操作

    查看最新的10 个提交版本

    看最新的10行
    svn log -l 10
    
    看最新的4行,详细
    svn log -v --limit 4
    
    滑动看日志
    svn log | less
    
    查看版本之间的日志
    
    svn log -r 274090:274093
    svn log -r 274093:274090

    六、diff 操作

    (版本号之前的 “r”,带不带都行)

    274903 版本 和上一个版本的差异

    cd  svn_test_r201
    svn diff -c 274903

    274901 版本 和274903版本的差异

    cd  svn_test_r201
    svn diff -r 274901:274903

    七、merge操作:

    假设:有两个分支

    分支1:https://****/branches/svn_test_r201

    分支2:https://****/branches/svn_test_r202

    (如果svn_test_r202有修改,大概率有冲突)

    merge 分支2 的代码到 分支1(反之,换个目录,同样操作)

    第一种:svn merge from to

    例如:合并 svn_test_r202 的所有改变 到 svn_test_r201

    cd  svn_test_r201
    svn merge https://****/branches/svn_test_r202

    第二种:svn merge -c 版本号 from to

    例如:合并 版本号为 274894 的 svn_test_r202 的改变 到 svn_test_r201

    cd  svn_test_r201
    svn merge -c 274894 https://****/branches/svn_test_r202

    第三种:svn merge -r 版本号:版本号 from to

    例如:合并 版本号 274891到274893 的 svn_test_r202 的更改 到 svn_test_r201

    cd  svn_test_r201
    svn merge -r 274891:274893 https://****/branches/svn_test_r202

     八、代码回滚

    回滚到制定的版本上:

    svn log 找到最新的版本号,274906

    比如:274906 要回滚到 274902

    cd  svn_test_r201
    svn merge -r 274906:274902 https://****/branches/svn_test_r202

     九、解决冲突

    举例:svn up(出现冲突)

    [*****]$ svn up
    在 “readme” 中发现冲突。
    选择: (p) 推迟,(df) 显示全部差异,(e) 编辑,
            (mc) 我的版本, (tc) 他人的版本,
            (s) 显示全部选项:

    1、根据选项:e现在编辑 or mc接受我的版本 or tc接受他人的版本;(等于是直接手动解决)

    2、或者选择:p 推迟 (以下都是推迟后,纯手动解决)

    2.1 推迟后手动修改冲突,并提交(等同于 选项 e)

    2.1.1、推迟后打开冲突文件 readme

    $ 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

    2.1.2 、去掉别人的修改,或者保留删除,自己手动合并代码:

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

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

    $ svn resolve --accept working readme
    Resolved conflicted state of 'readme'
    $ svn commit -m "modify working"

          --accept=working :告诉 Subversion 把文件的当前内容作为冲突解决后的状态;

         svn resolve 会删除目录下的三个临时文件, 将用户指定的 文件版本作为冲突解决后的最终版。

    2.2 全丢弃自己的修改(接受别人的修改,等同于选项 tc)

    svn resolve --accept theirs-full readme

    2.3 丢弃当前的所有修改 (等效于 2.2的操作,等同于选项 tc)

    svn revert readme

    2.3 接受本地mine 的更改(等同于 选项 mc )

    svn resolve –accept mine-full readme
  • 相关阅读:
    上传高德地图-express框架
    express不是内部命令
    elasticSearch 安装
    elasticSearch 分布式安装
    mongoDB基本操作
    [是题解哦] 洛谷 P1865 A % B Problem
    [是题解哦] 洛谷 P1531 I Hate It
    [是题解哦] 洛谷 P1195 口袋的天空
    [是题解哦] 洛谷 P1536 村村通
    [是模板哦] 快速读入
  • 原文地址:https://www.cnblogs.com/lovychen/p/16076097.html
Copyright © 2020-2023  润新知