版本控制软件使用

版本控制软件使用

Svn

  • 获取远程文件
    1
    2
    3
    4
    5
    6
    7
    8
    9
    # 这种方式会默认吧项目下载的当前位置,链接最后的文件夹名会作为本地的项目名
    svn checkout [远程地址(svn://或者http://)] --username [用户名]
    # 指定项目下载位置
    svn checkout [远程地址(svn://或者http://)] [本地目录绝对路径] --username [用户名]
    # 明文指定用户密码
    svn checkout [远程地址(svn://或者http://)] --username [用户名] --password [密码]
    示例:
    svn checkout svn://192.169.1.1:8001/abc/py-workspace --username zhangsan
    svn checkout svn://192.169.1.1:8001/abc/py-workspace /Users/atey/PythonProject/def/ --username zhangsan
  • 同步远程更新本地文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # 更新当前位置下,所有的文件到最新版
    svn update
    # 更新指定文件到某个版本
    svn update -r [版本号] [文件名]
    # 更新某个文件到最新版
    svn update [文件名]
    示例:
    svn update
    svn update -r 200 abc.py
    svn update abc.py
  • 编辑忽略文件列表

    1
    2
    3
    4
    5
    # 在项目目录中运行下面的命令,否则就把 . 改成对应的目录位置
    svn propedit svn:ignore .
    # 在弹出的文本编辑器中写入需要忽略的文件名或者文件夹,一行一个
    .idea # 如果要忽略文件夹,最后不要加 / 否则忽略无效
    test.txt # 忽略文件
  • 查看本地文件变更状态

    1
    2
    3
    4
    svn status
    # 标识符说明
    ?:不在svn的控制中(新增文件/文件夹) M:内容被修改 C:发生冲突
    A:预定加入到版本库 K:被锁定
  • 添加文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    # 添加单个文件
    svn add [文件名/文件夹]
    # 添加某种文件
    svn add [通配符匹配文件名]
    # 注意 svn 无法直接 add . (跟Git有区别这里)
    ➜ svn add .
    svn: warning: W150002: '/Users/atey/PythonProject/abc' is already under version control
    svn: E200009: Could not add all targets because some targets are already versioned
    svn: E200009: Illegal target for the requested operation
    # 如果需要添加全部未提交可借助shell命令
    svn status | awk '{if ($1 == "?") {print $2} }' | xargs svn add
    # 同样批量删除
    svn status | awk '{if ($1 == "!") {print $2}}' | xargs svn rm
  • 提交更改
    注意: Svn的提交是直接提交到远程服务器,而Git的提交是提交到本地

    1
    2
    3
    4
    5
    6
    # 提交文件,并注明提交说明
    svn commit -m "提交备注信息文本" [文件名]
    # 提交全部文件
    svn commit -m "提交备注信息文本" *
    # 提交更改注释从文件读取
    svn ci -F comment.txt
  • 查看操作记录

    1
    2
    3
    4
    5
    svn log [项目路径/远程路径]
    # 查看最新的前三个版本
    svn log -l 3
    示例:
    svn log svn://192.168.1.1:8001/abc/def
  • 回滚操作

    • 没有提交,本地回滚
      注意: svn revert本身有固有的危险,因为它的目的是放弃未提交的修改.一旦你选择了恢复,没有方法找回未提交的修改.

      1
      2
      3
      4
      # 回滚文件
      svn revert [文件名]
      # 回滚文件夹
      svn revert -R [文件夹名]
    • 已经提交

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
       1. 保证目前代码为最新代码
      2. 找出要回滚的版本号
      3. 使用 diff 比对两个版本 svn diff -r [版本1]:[版本2] ""
      4. 使用merge 开始回滚 svn merge -r [版本1]:[版本2] ""
      5. 提交操作
      示例:
      svn update
      svn log # 或者 svn log -l 3 找出最新的前三个版本
      svn diff -r r28:r25 "" # 比对版本差异
      svn merge -r r28:r25 "" # 回滚更新
      svn diff "" # 确认回滚结果
      svn commit -m "Revert revision from r28 to r25,because of ..." # 提交操作
  • 常见错误记录

    • 编辑忽略文件列表时
      运行svn propedit svn:ignore .编辑忽略文件列表,批量忽略文件或者文件夹时,出现下面的错误
      1
      2
      3
      4
      5
      svn: E205007: None of the environment variables SVN_EDITOR, VISUAL or EDITOR are set, and no 'editor-cmd' run-time configuration option was found
      # 解决方法,指定对应的文本编辑器
      编辑当前的shell文件,添加环境变量
      vi ~/.bash_profile 或者 vi ~/.zshrc
      export SVN_EDITOR=vim
 
原文地址:https://www.cnblogs.com/mouseleo/p/10903193.html