• SVN基本使用笔记——广州云科


    简介

    SVN是什么?
    代码版本管理工具
    它能记住你每次的修改

    查看所有的修改记录

    恢复到任何历史版本

    恢复己经删除的文件


    SVN跟Git比,有什么优势
    使用简单,上手快
    目录级权限控制,企业安全必备
    子目录Checkout,减少不必要的文件检出


    主要应用:
    开发人员用来做代码的版本管理
    用来存储一些重要的文件,比如合同
    公司内部文件共享,并且能按目录划分权限


    SVN仓库
    推荐: svnbucket.com,sVN桶

    现在最好用的SVN服务


    安装sVN客户端
    TortoisesvN   windows推荐

    cornstone    mac推荐

    svnbucket.com(sVN桶)官网如下:也有使用教程

    svn使用教程 · SVN使用教程

    下载安装svn客户端

    可参考:svn客户端下载 · SVN使用教程

    从而下载win的64位的TortoiseSVN客户端

    官网下载太慢,也可找别的渠道下载,如【TortoiseSVN下载 中文版】TortoiseSVN 1.14.5-ZOL软件下载

    下载后,点击安装直接next。

    下载汉化包:还是找到上面官网svn客户端下载 · SVN使用教程

    下载后运行安装,安装最后一步勾选配置TortoisesvN使用这个语言。即可。

    sVN基本操作:
    检出checkout

    新增add
    提交commit

    更新update

    历史记录

    SVN基本操作

    1、进入官网,注册登录后,项目列表点击加号创建一个项目,输入名称和描述,可先不勾选那个创建三个目录的按钮。

    SVNBucket - SVN仓库,免费 SVN 代码托管服务器,不限私有,不限成员

    2、点击这个项目,点击复制SVN地址如svn://svn.svnbucket.com/svn_3284514536/svnbucket/

    3、桌面上创建一个目录,如workspace,点进去,点击右键,然后点击svn检出,再给他加一层目录后点击确定,输入svn的用户名和密码即可。

    4、进入该目录C:\Users\kongdeyi\Desktop\workspace\svnbucket后,发现一个.svn文件夹,我们在这个C:\Users\kongdeyi\Desktop\workspace\svnbucket目录下从别的地方copy几个文件放进去。右键svn提交,然后第一个框中输入描述,第二个框中选择要提交的内容,也可点击全选全部选中,然后确定即可。

    5、然后再是svnbucket网站中可看到提交的内容和记录等

    6、我们修改一下pojo中的User实体类中的内容,然后再次在.svn文件夹所在的目录点右键svn提交,提交前可双击查看文件变更的内容差异:

    确定没问题后,确定提交即可。

    7、svnbucket网站上该文件查看发现是经过修改后的内容。

    8、查看日志:在该C:\Users\kongdeyi\Desktop\workspace\svnbucket\文件夹或子文件夹中右键tortoiseSVN选择显示日志即可查看之前提交的内容。

    在svn提交之前先右键的svn更新是一个比较好的习惯,可避免覆盖原文件。

    撤销和回复

    撤销和恢复:
    撤销本地修改

    撤销已提交内容

    恢复到指定版不

    第一种情况:比如我们修改了pojo下的User类将类名改成User666,只是在本地还未提交,我们想到这个是个错误的修改,我们可右键tortoiseSVN中选择还原,也可在svn提交的时候,检查一下修改的内容后,提交窗口中右击该文件选择svn还原。

    第二种情况,当我们将修改成错误的内容文件提交上去了,提交完后发现该pojo下的user类刚刚修改成user666是有问题的。

    可先在右键tortoiseSVN中日志中看到这次提交的文件,点开发现和之前修改的区别确实是改错了。我们可在下图位置右键,选择复原此版本做出的修改

    然后现在只是本地恢复正常了,但我们还需要提交到仓库,右键svn提交即可

    第三种情况是我们想恢复到一个比较早的版本,恢复到指定版本

    右键tortoiseSVN中日志中,想要复原到的版本,右键复原到此版本

    现在还是只是本地修改了,我们还需要svn提交。

    添加忽略

    忽略不想提交的文件:

    C:\Users\kongdeyi\Desktop\workspace\svnbucket文件夹下的pojo我们不想pojo文件夹提交了,我们可右击这个pojo文件夹,tortoiseSVN->去除版本控制并增加到忽略列表,选择pojo即可。

    然后,先svn更新后svn提交,就会将这些删除pojo目录的本地提交到远程仓库。

    也可在svn提交的时候,在第二个框中,对某个文件或文件夹右键,选择增加到忽略列表也可。

    又不想忽略这个pojo文件夹或其他已经被忽略的文件呢?

    右击这个被忽略的文件或文件夹,tortoiseSVN选择加入,或选择从忽略列表中删除。然后svn提交即可。

    解决冲突

    什么情况容易发生冲突?
    1多个人修改了同个文件的同一行

    2无法进行合并的二进制文件
    怎么避免冲突?
    经常update同步下他人的代码

    二进制文件不要多个人同时操作
    冲突了怎么办?
    解决冲突很简单,不用怕

    版本冲突原因:

    假设A、B两个用户都在版本号为100的时候,更新了kingtuns.txt这个文件,A用户在修改完成之后提交kingtuns.txt到服务器,这个时候提交成功,这个时候kingtuns.txt文件的版本号已经变成101了。同时B用户在版本号为100的kingtuns.txt文件上作修改,修改完成之后提交到服务器时,由于不是在当前最新的101版本上作的修改,所以导致提交失败。

    别人修改了pojo下的User中类名改为User666并提交了,本机电脑没有update这个最新版本的,在上一个版本中也修改了User类的类名这一行的代码为public interface,然后svn更新,或只选中这个User类进行svn更新这一个文件,就会报冲突,会生成几个这个User文件,mine是本地的,r7和r9是版本7或9的,参考下图:

    解决方法:

    然后右击爆红的地方,可使用他的,丢弃我的,也可丢弃我的,使用它的。也可编辑冲突:

    编辑冲突,可以在他的或我的冲突的这行右击这一行,使用某个正确的文本块,如下:

    确定后,更新成功,本地恢复正常了,解决冲突了。

    对于修改二进制文件,比如图片,用别的地方某个同名图片覆盖掉svn项目中的某个图片。然后svn更新,就会产生冲突。右击爆红的冲突这行,可选择使用他们的还是使用我的,或选择编辑冲突,选择要本地现在的副本的,还是上一个版本的,还是远程的。

    分支

    什么时候需要开分支?
    隔离线上版本和开发版本
    大功能开发,不想影响到其他人,自己独立开个分支去开发


    sVN经典目录结构:
    trunk    主干,开发中的文件 ,平时在主干上开发,开发后用那个版本可开一个分支存储到branch中。
    branches   分支

    tags    标签

    1、可在vnbucket中创建项目的时候勾选那个创建分支接口的选框。

    2、自己创建:

    先创建这三个文件夹,然后将之前该svnbucket文件夹中的工作文件放到trunk目录中,svn提交,选择全部文件提交即可。        

    开发就在主干上开发,开发完成要上线了,就可开一个分支。

    1、右击trunk文件夹,ortoiseSVN选择分支/标记,选择至路径branches,加个onlinev1.0

    填写信息,选择版本库中的最新版本

    点击确定即可

    2、更新一下C:\Users\kongdeyi\Desktop\workspace\svnbucket  svn更新,然后branches目录下就会有onlinev1.0文件夹,里面就有trunck分支下的所有内容复制了一份。

    这样会有个问题,以后分支越来越多,要更新的内容也会越来越多,我们可将分支单独checkout一份出来:

    右击这个文件夹,选择属性

    选择subVersion,复制全部的url:

    回到workspace,在这个目录右击,选择svn检出,也可改个名字,确认即可:

    然后同理,sgvnbucket目录下的trunk目录也可属性复制url,在workspack目录下检出一份。这样svnbucket目录就可删除了,结果如下

    这样在主干修改的内容提交不会影响分支,分支修改提交也不会影响主干。

    合并分支 

    分支上修改的内容怎么同步到主干上呢,如分支上修改bug,要同步到主干上:

    workspace目录下右击这个svnbucket-onlinev1.0文件夹,ortoiseSVN选择显示日志。选中某个版本,合并版本到:

    合并版本到,选择主干的文件夹:

     本地主干目录合并好了,我们在主干目录svn提交到远程仓库

    分支切换 

    再开一个分支:

    右击workspace目录下的svnbucket-trunk目录,选择tortoisesvn,选择分支/标记,选择branches分支,起个名onlinev2.0,确认即可。

    右击这个svnbucket-onlinev1.0, tortiosesvn,选择切换:

    可下拉切换,或点右侧选择路径切换 

    确定后,右击这个svnbucket-onlinev1.0属性,就看到切换成2.0了

    当然,我们可以给这个文件夹改个名字:

    也可点进C:\Users\kongdeyi\Desktop\workspace\svnbucket-online,右击后 tortiosesvn点击版本库浏览器,查看结构        

    代码暂存

    有什么用?
    1.代码改了很多,突然需要紧急修复一个bug,但是代码还没写完,不能提交。

    2.代码重构了很多,突然需要发布新版本,但是代码还跑不起来,不能提交。

    C:\Users\kongdeyi\Desktop\workspace\svnbucket-trunk\pojo中的User类,我们修改了一些代码,带还没改完,不应该提交。我们右击后Tortoise中选择汉化翻译的贮藏

    上面两个按钮,一个不保留修改,一个保留修改。 

    取出暂存,我们右击后Tortoise中选择汉化翻译的取消贮藏,选择暂存的文件来取出暂存

     复杂代码合并

    上面分支部分学了在日志中选择某个版本合并到另外一个分支上去。

    情况:
    主千开发新功能,改了很多
    分支是线上版本,修复了很多bug
    两个分支的代码时间久了差异很大,无法直接分支合并或者指定提交记录合并代码


    使用BeyondCompare

    下载:下载 | Beyond Compare 中文官方网站

    安装后使用

    选择文件比较,选择将路径分别粘贴到左右:

    选中右键比较内容,直接点开始,

    上方选择差别菜单,也可选择全部。

    点开这个User.java文件:

    点左边这个,将右边替换,点击右边这个将左边替换。然后修改完后,再ctrl+s可保存。

    然后就可按需合并修改了。然后再把代码提交上即可。

  • 相关阅读:
    通过Python的pdfplumber库提取pdf中表格数据
    202303机器人三级理论部分精密解析
    邮件群发软件
    1-丁基-3-甲基咪唑锚氢氧化物[bmim]OH;新型氢氧型N-十二烷基双核吗啉离子液体[Nbmd]OH离子液体
    C++学习笔记(二十二)
    今日论文阅读2022-11-10
    中英文说明书丨艾美捷HEK293T宿主细胞蛋白ELISA试剂盒
    prostate数据集下载
    vue 前端实现login页登陆 验证码
    ClickHouse 数据插入、更新与删除操作 SQL
  • 原文地址:https://blog.csdn.net/csdnidofkdy2138/article/details/132633992