版本控制SVN与Git

news/2024/7/8 16:27:15 标签: 版本控制

SVN VS Git

SVN

作为一个开源的版本控制系统,管理着随时间改变的数据,这些数据放置在一个中央资料档案库(repository)中。这个库就像一个普通的文件服务器,它会记住每次文件的变动。我们可以浏览文件的变动历史,把当前版本的文件恢复到旧的版本。

SVN 集中式协同模型

集中式代码管理的核心是服务器,所有的版本信息都放在服务器上,因此受到网络的限制。所有开发者在开始一天的工作前都要从服务器获取最新版本的代码,然后进行开发,再提交代码,解决冲突。

Git

Git 是一款开源的分布式版本控制系统,可以敏捷高效的处理或或大或小的项目。分布式和 SVN 等集中式的最大区别在于每个开发人员从中心版本库/服务器上 check out 代码后会在自己的机器上克隆一个自己的版本库。这样在没有网络的情况下在本地也可以进行开发,代码管理。

Git 分布式模型

Git 的一些功能特性

  • 从服务器上克隆完整的 Git 仓库(包括代码和版本信息)到单机上;
  • 在自己的机器上根据不同的开发目的,创建分支,修改代码;
  • 在单机上自己创建的分支上提交代码;
  • 在单机上合并分支;
  • 把服务器上最新版的代码 fetch 下来,然后跟自己的主分支合并;
  • 生成补丁(patch),把补丁发送给开发者;

Git 与 Github

Git 是一个系统,相当于一个工具,而 Github 就是基于这样一个系统的代码托管平台,让开发者更高效的使用 Git 去托管自己的代码。

Git 与 SVN 区别

  1. Git 是分布式的,SVN 是集中式的。Git 的好处是跟其他同事不会有太多的冲突,自己写的代码放在自己电脑上,一段时间后再提交、合并,也可以在不用联网在本地提交。
  2. Git 没有一个全局的版本号,而 SVN 有。SVN 里容易阅读的数字版本号,它实际是任何一个相应时间的源代码快照。
  3. Git 分支和 SVN 分支不同。分支在 SVN 中一点不特别,就是版本库中的另外一个目录。而 Git 可以从同一个工作目录下快速的在几个分支之间切换。
  4. Git 把内容按元数据方式存储,而 SVN 是按文件。所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn.cvs 等文件夹里。如果你把 .git 目录的体积大小跟 .svn 比较,你会发现他们差距很大。因为 .git 目录是处于你的机器上的一个克隆版的版本库,它具有中心版本库上所有的东西,例如标签、分支、版本信息等。
  5. Git 的内容完整性要优于 SVN。Git 的内容存储使用的是 SHA-1 哈希算法。这能确保代码内容的完整性,在遇到磁盘故障和网络问题时降低对版本库的破坏。

Git 和 SVN 的适用性

SVN 更适用于项目管理,Git 仅适用于代码管理。一个研发队伍的成员正常包括:需求分析、设计、美工、程序员、测试、运维,每个成员在工作中都有产出物,包括了文档、设计代码、程序代码,这些都需要按项目集中进行管理的。SVN 能清楚的按目录进行分类管理,使项目组的管理处于有序高效的状态。

文章只是作为个人记录学习使用,如有不妥之处请指正,谢谢。


http://www.niftyadmin.cn/n/1603009.html

相关文章

超赞:不愧是“阿里内部Redis学习笔记”从头到尾,全是精华

近几年,随着移动互联网的飞速发展,我们享受着整个社会的技术进步带来的便利,但同时也给从业者带来了如何保证项目的高并发、低延时的技术挑战,相应的互联网技术也随之发生了重大变革,NoSQL技术得到了蓬勃的发展。 Red…

Android 数据库基础

概述 初学 Android 时,我们所了解的数据存储方式是把数据存储到变量里(store it in variables)。但是变量的生命周期和 Activity 的一样长,可以将它想象成临时存储器(temporary storage)。我们需要一个更永…

年薪30WJava岗需要什么水平?《2022年面试总纲笔录》

前言 一份月薪30K的java开发岗位工作要求是怎样的呢?面试都会问到哪些呢? 任职要求: 1、计算机或相关专业本科(或以上)学历,具备3年以上Java服务端开发经验,熟悉常用的Java开源框架&#xff0c…

在 Android 应用中使用数据库

概述 在 Android 代码中创建和修改 SQLite 数据库,我们可以参考 Android 文档 Save data using SQLite,我们在 Android 中需要采取两个基本步骤来设置 SQLite 就可以和数据库互动了。如下所示: Define a schema and contract-创建架构和契约…

Android 数据存储之 Content Providers

为什么要使用 Content Provider 在上篇文章中,我们看到 Activity 都是直接调用 PetDbHelper 来直接访问数据库的。所以只要我们知道插入的信息是正确的,这样的操作就没有问题。但不小心在 Activity 中插入了一个不良的数据(例如宠物的值为 -…

面试官:手写一个必然死锁的例子

前言项目环境1.什么是死锁?2.死锁的影响和危害3.必然死锁示例4.过程分析5.总结前言 只对死锁代码感兴趣的可以直接跳到第三小节 必然死锁示例,如果对死锁还不太了解的,我们可以一起来讨论以下几个议题 什么是死锁?死锁有什么危害…

Android 数据存储之使用 CursorLoader 加载数据

CursorAdapter 简介 Adapter:Responsible for making a list item view for each item in data source. 正如上面所说,适配器为数据源中的每个项创建列表项视图。例如,如果我们的数据源为 ArrayList 比如由文字组成的 ArrayList,那…

2022年,SpringMVC这篇文章吃透了,最少最少涨5000

本文将通过阅读源码的方式带大家了解 springmv 容器启动的过程,SpringMVC 中的各种组件都是在容器启动的过程中组装的,所以如果熟悉整个过程后,你可以随意对 SpringMVC 进行扩展,SpringMVC 会被你玩的出神入化。 目录 1、前言2、…