首页 > 其他分享 >git与svn的区别

git与svn的区别

时间:2024-04-05 21:12:28浏览次数:27  
标签:svn SVN git 版本 文件 代码 区别 修改 提交

SVN学习笔记

已于 2023-10-16 07:24:49 修改 阅读量116 收藏 1 点赞数 文章标签: svn 学习 笔记 于 2023-10-15 08:25:50 首次发布 版权

目录

 

1.SVN是什么?

2.SVN跟Git比,有什么优势?

3.SVN仓库

4.安装SVN客户端

5.上手文档

6.SVN基本操作:

6.1在SVNBucket新建项目

 6.2在自己的工作目录下,鼠标右击,选择SVNCheckout

6.3点击进入demo文件夹,可以创建文件,使用SVN对文件进行管理

7.撤销和恢复

7.1撤销本地修改

 7.2撤销已提交内容

​编辑 7.3恢复到指定的版本

​编辑 8.忽略文件、文件夹

9.什么情况容易发生冲突?

9.1 多个人修改了同个文件的同一行

9.2无法进行合并的二进制文件(二进制文件冲突)

10.什么时候需要开分支?

11.SVN的代码暂存 

12.复杂代码合并


 


 

 

1.SVN是什么?

1.代码版本管理工具

2.它能记住你每次的修改

3.查看所有的修改记录

4.恢复到任何历史版本

5.恢复已经删除的文件

2.SVN跟Git比,有什么优势?

1.使用简单,上手快

2.目录级权限控制,企业安全必备(而git则没有权限控制,因为每个成员都可以克隆一整个文件。)

3.子目录Checkout,减少不必要的文件检出

4.主要应用:开发人员用来做代码的版本管理

5.用来存储一些重要的文件,比如合同

6.公司内部文件共享,并且能按目录划分权限

 

3.SVN仓库

推荐: svnbucket.com,也叫SVN桶,是现在最好用的SVN服务

4.安装SVN客户端

TortoiseSVN(windows)
Cornstone(mac)

5.上手文档

可以在点击上图的“各种SVN客户端”下载客户端

6.SVN基本操作:

检出 checkout

新增 add

提交 commit

更新 update

历史记录

6.1在SVNBucket新建项目

 可以暂时不勾选“自动创建trunk、branches、tags目录结构”,后面可以手动创建。

 6.2在自己的工作目录下,鼠标右击,选择SVNCheckout

 文件夹中有绿色的√,说明已经和SVN的服务端同步了;如果没有绿色√,可以重启电脑看看绿色√是否出现。

6.3点击进入demo文件夹,可以创建文件,使用SVN对文件进行管理

6.3.1提交到SVN服务端

下面右击空白处将所有文件进行管理,提交一些文件

进入SVNBucket网站可以看到提交的源码文件和记录

此时再点击SVN Update更新,是不会有变化的,因为我们的代码文件还没有变化。

6.3.2更新到SVN服务端(每次更新:提交前SVN Update一次,提交完再SVN Update一次!!!不是第一次提交上去的都是记得使用更新的步骤!!!)

下面更改代码文件,对代码进行更新(更改代码后需要SVN Update更新再SVN Commit提交,因为团队成员可能也提交了,不更新容易和别人的代码起冲突)

右击空白处选择SVN Update

 

 

最后需要再点击一下SVN Update,同步服务端代码!!!

 6.3.3查看日志,查看所有的记录

 

双击文件也可以看到相应的变化

7.撤销和恢复

撤销本地修改

撤销已提交内容

恢复到指定版本

7.1撤销本地修改

一般修改完代码后,文件会出现红叹号。

修改编写代码后,发现自己在代码中写了错误的内容。这个时候我们需要撤销本地修改(因为只是修改了内容,但是还没有提交,所以只需要撤销本地修改)

撤销本地修改第一种方法:右击-->TortoiseSVN-->SVN还原(Revert)

此时发现代码还原了

撤销本地修改第二种方法:SVN Commit-->右击需要还原的文件-->Revert

 

 7.2撤销已提交内容

将错误的内容提交到SVN服务端了,这时需要撤销已提交的内容。

首先看一下提交记录:

点击查看提交的内容:

 

 查看变更的内容:(点击SVN Commit然后双击文件查看)

目前只是已经完成了在本地的撤销,还需要再提交到SVN服务端去 (提交的步骤)

 7.3恢复到指定的版本

首先看一下提交记录:

 8.忽略文件、文件夹

有时候我们不想提交一些文件,那么我们就可以忽略它。

第一种:例如忽略image目录

 

再进行提交: 

 

第二种:在src文件夹下有个test.txt,想要忽略它

方法一:先按提交步骤-->再右击文件-->增加到忽略列表-->再提交到SVN服务端

 

 方法二:直接右击test.txt文件-->Tortoise SVN-->Remove from ignire list-->test.txt-->提交

注意:从忽略列表删除,步骤是类似忽略列表的操作的

9.什么情况容易发生冲突?

1.多个人修改了同个文件的同一行

2.无法进行合并的二进制文件

怎么避免冲突?

经常update同步他人的代码

二进制文件不要多个人同时操作

9.1 多个人修改了同个文件的同一行

产生冲突,产生多个文件,分别为版本7和9,还有我的,一共三个文件

选择法三后:

 

 

 

9.2无法进行合并的二进制文件(二进制文件冲突)

 接着,另外一个人也修改了这张图片,这时就会产生冲突。

 

10.什么时候需要开分支?

1.隔离线上版本和开发版本

2.大功能开发,不想影响到其他人,自己独立开个分支去开发

 

SVN经典目录结构:

  • trunk:主干,主要存放开发中的文件,开发完成之后,开一个分支将对应的版本存放在branches里面
  • branches
  • tags 

下面手动新建trunk、branches和tags 文件夹,将原来的所有文件放在trunk下面,再将三个大文件夹的内容提交

当我们trunk主干开发完成了,准备上线了,那么我们可以开一个线上版本:

分支成功。接着更新一下,再进入branches文件夹里面可以看到onlinev1.0文件夹,如下:

在onlinev1.0中的文件和trunk当前已经提交了的文件(绿色√)一样。

但是这样也会有个问题,当分支越来越多的时候,需要更新的内容也就越来越多了,所以我们可以单独把分支checkout出来一份。

trunk也可以按照类似的步骤checkout出来。这样在目录中就有一个单独的主干(trunk)和单独的分支(onlinev1.0)了。

下面将主干trunk也checkout出来:

这是可以把包含所有主干和分支的demo目录删除了。删除后,就剩主干project-trunk和project-onlinev1.0了。

主干和分支的修改是相互不会影响的。一般线上版本出现问题的时候,才在线上版本作修改并提交等等的操作(线上问题的修复),但是当线上版本修复之后,主干并没有被修复,这时候我们需要做的并不是在主干上也按照同样的步骤进行同样的修改,而是可以将线上版本合并到主干。

 

下面修改(修复)project-onlinev1.0,当线上版本修复后,提交线上版本:

 线上版本修复后但是主干版本还没有修复,所以接着,将线上版本的修复合并到truck中:

首先更新一下project-truck

 

出现冲突,解决冲突

 然后关闭上面这个文件。

合并完成后,对主干进行提交。

实现切换分支:

由于当前之后project-onlinev1.0一个分支,所以下面再创建分支project-online2.0切换分支:

 

 

 现在onlinev2.0,点击OK,切换成功!

我们可以检查一下路径看看究竟是不是v2.0:

根据上面,确定已经切换到了v2.0。

 

我们还可以查看仓库结构:

 

11.SVN的代码暂存 

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

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

以上两种情况,我们提交不了本地代码,但是我们可以把本地代码暂存起来,解决完上面的问题后继续开发!

修改代码:

 

 下面的1和2选择一个:

这里演示首先选择2(暂存后本地的修改还会保留): 接着取出暂存看看:

: 

下面演示选择1:

说明本地修改被撤销了。下面取出暂存:

恢复了红叹号。

12.复杂代码合并

情况:
1.主干开发新功能,改了很多

2.分支是线上版本,修复了很多bug

 

两个分支的代码时间久了差异很大,无法直接分支合并或者指定提交记录合并代码


方法:使用BeyondCompare工具进行合并

 

 

 

标签:svn,SVN,git,版本,文件,代码,区别,修改,提交
From: https://www.cnblogs.com/xfyyds/p/18116194

相关文章

  • addEventListener() 和 onclick 的区别
    前言:我们经常会看到有关addEventListener()和onclick的区别的标题,其实跟addEventListener()同级对比的应该是on+事件名称,不过在addEventListener()第一个参数为click的时候,addEventListener和onclick则值得作比较,下面就从三个角度来说说它们的区别。1.用法1.1addEven......
  • Vue2和3中的插槽区别及其简单案例
    vue中的插槽是什么,官方解释是:Vue实现了一套内容分发的API,这套API的设计灵感源自WebComponents规范草案,将<slot>元素作为承载分发内容的出口......vue2插槽和vue3插槽基本概念是一致的,也是匿名插槽、具名插槽、作用域插槽三种,只是基础语法有一些区别。下面让我们温习......
  • tsconfig.build.json 和 tsconfig.json 的区别是什么,为啥分为两个?
    tsconfig.json和tsconfig.build.json都是TypeScript编译器的配置文件,它们用于定义TypeScript项目的编译选项和规则。虽然它们的核心功能相同,但通常情况下,项目中会有多个tsconfig文件,如tsconfig.build.json,以满足不同编译场景的需求。下面是它们之间的一些关键区别:目......
  • 学习 Git 基础知识 - 日常开发任务手册
    欢迎来到我关于Git的综合指南,Git是一种分布式版本控制系统,已经在软件开发中彻底改变了协作和代码管理方式。无论你是经验丰富的开发者还是刚开始编程之旅的新手,理解Git对于正确掌控代码、高效管理项目和与他人合作至关重要。在本教程中,我将带领你了解Git的基础知识,涵盖从......
  • ps -ef和ps -eo区别
    `ps-ef`和`ps-eo`都是Linux系统中用于查看进程的命令,但它们的主要区别在于输出的格式和内容。`ps-ef`命令用于显示系统中所有进程的列表,包括其他用户的进程。输出的内容包括UID(用户ID)、PID(进程ID)、PPID(父进程ID)、C(CPU占用率)、STIME(启动时间)、TTY(终端类型)、TIME(CPU时间)以及CMD(......
  • C语言中循环语句while 中判断条件出现 || 和 && 的区别
    当while循环条件中出现||(逻辑或) ||两边的条件有任意一个满足条件时,即为真(也就是非0),循环继续,只有两边都满足条件时,即为假(也就是0),跳出循环  当while循环条件中出现&&(逻辑与)&& 两边都满足条件时,即为真(也就是非0,循环继续只要有任意一边满足条件,即为假(也就是0),跳出循环......
  • &&和&的区别
    1.短路逻辑与(&&):○当用于布尔表达式时,&&运算符具有短路特性。这意味着如果第一个表达式的值为false,那么它不会去评估第二个表达式,因为无论第二个表达式的值是什么,整个表达式的最终结果都将为false。○这种短路性质对于避免不必要的计算和可能的副作用特别有用,例如......
  • 浏览器中localStroage、sessionStorage、cookie的区别与使用
    特性localStoragesessionStorageCookieSession存储位置浏览器本地浏览器本地浏览器本地服务器数据传输不自动发送不自动发送自动发送ID自动发送存储类型键值对键值对文本多种类型(任意)存储大小通常约5MB通常约5MB通常≤4KB无硬性限制生命周期持久化存储关闭窗口/标签页后清除可......
  • `.gitattributes` 文件中的 *.js linguist-language=ts *.tsx linguist-language=ts
    .jslinguist-language=ts和.tsxlinguist-language=ts是针对特定文件类型的元数据标记,它们的作用是在特定的上下文中指示这些文件的实际编程语言类型,而非其扩展名所暗示的语言。具体来说:.jslinguist-language=ts表示尽管文件以.js扩展名结尾,但实际上它应该被视为TypeScr......
  • 构造方法和普通方法区别是啥?
    在面向对象编程中,构造方法(Constructor)和普通方法(普通方法)有几个关键区别:用途不同:构造方法用于初始化对象,当创建一个类的实例时会自动调用构造方法来初始化对象的状态。普通方法用于执行特定的操作或计算,并且可以根据需要调用多次。方法签名不同:构造方法的名称与类名......