一、版本控制引入
可能我们都会有这样的经历:创建了一个文件,并对它做了多次更改,当我们想回到其中的某一次更改的时候,由于时间太长记不得那次更改的内容,于是我们在每次大的更改的时候,会创建一个文件的副本,然后用副本1、副本2等标记,如下图所示:
 
现在我们有了版本控制这种工具,它可以详细的记录你每次更改(必须提交),你可以回退到某个版本,甚至比较两个版本的不同。
二、版本控制种类
目前主要有两种版本控制的方式:集中式以及分布式
1、集中式版本控制系统
像SVN、TFS等版本控制工具就属于集中式版本控制系统。这类系统需要一个中央服务器来存储所有修订的版本以及历史记录等信息。使用者需要连接到这台中央服务器来获取和提交文件。
这类版本控制系统的缺点是单点以及需要一个服务器才可以使用,单点无法保证数据的安全备份,需要一个中央服务器我们则必须安装两套环境(服务器以及本地环境)。
服务器环境保存所有项目信息,本地环境只保存当前文件。
2、分布式版本控制系统
Git就是分布式版本控制系统的代表,它不需要中央服务器就可以工作,每个端都可以当做服务器,并保存所有的信息。
但是大多时候,我们需要与别人协作来完成工作,所以还是需要一个机子作为中央服务器来交换我们的文件。不过这个时候我们本地与服务器所有的东西都是一致的。
三、Git使用场景
这里我们用使用场景来代替优缺点,因为一个工具不可能适应所有的项目。
1、纯本人使用。
你只要安装一个几十M的安装包,就可以在任何环境(不需要联网)下使用版本控制系统了。这个时候你的机子既当服务器又当客户端。实在不放心,还可以托管代码到公共的Git平台上,比如GitHub。
2、开源项目。
因为Git本身不支持权限管理,所以很多开源项目使用这套系统就不会有安全方便的顾虑。Git的创始人就是为了让全世界的Linux爱好者可以共同的参与到Liunx系统中,才发明的Git。

Git系列教程一 入门与简介的更多相关文章

  1. [译]Atlassian Git系列教程

    国庆期间把Atlassian的Git系列教程看完了.边看边翻译了相关文章. 原教程: https://www.atlassian.com/git/tutorials/ 我翻译的: git init g ...

  2. Git 系列教程(1)- Git 简介

    前言 因为工作中目前要大量使用 Git,虽然之前已经会用了,但没有系统的总结过,现在来重新总结 概念篇会直接搬网上的教程,比如:菜鸟.廖雪峰.老张.中文版Git,就不再花时间自己总结过概念了 Git ...

  3. Git 系列教程(11)- 分支简介

    前言 很多版本控制系统都有分支这个概念 使用分支意味着可以将日常工作从主线上脱离,从而避免影响主线 Git 鼓励在工作流程中频繁使用分支和合并 Git 是如何保存数据的 Git 保存的不是文件的变化或 ...

  4. Git系列教程三 配置与基本命令

    一.安装Git 网上有很多安装教程,可以参考.这里使用的是Windows版本的Git,点击这里下载. 二.基本设置 安装完成后,通过点击鼠标右键就可以看到新添加了俩个Git命令:Git GUI Her ...

  5. Cobalt Strike系列教程第一章:简介与安装

    Cobalt Strike是一款超级好用的渗透测试工具,拥有多种协议主机上线方式,集成了提权,凭据导出,端口转发,socket代理,office攻击,文件捆绑,钓鱼等多种功能.同时,Cobalt St ...

  6. Git 系列教程(2)- Git 安装

    前言 直接复制官网的教程了,不对自己百度吧,不然就参考下我的几篇文章 Linux安装Git(源码安装) https://www.cnblogs.com/poloyy/p/12186802.html 在 ...

  7. Git 系列教程(3)- 初次运行 Git 前的配置

    前言 直接搬官网教程,再修改下,先啰嗦可以直接看以前的文章 Window初始化Git环境 https://www.cnblogs.com/poloyy/p/12185132.html Linux初始化 ...

  8. Git系列教程二 基础介绍

    一.存储方式 如果让我们设计一个版本控制系统,最简单的方式就是每做一次更改就生成一个新的文件. 这样的方式太占用空间,所以传统的版本控制系统都是保存一个文件的某个版本的全部内容以及其他版本相对于这个版 ...

  9. Git 系列教程(5)- 记录每次更新到仓库

    文件状态 你工作目录下的每一个文件只有两种状态:tracked 或 untracked tracked 已跟踪 tracked 的文件是指那些被纳入了版本控制的文件 在上一次快照中有它们的记录,在工作 ...

随机推荐

  1. ubuntu配置 Java SE 1.6

    今天编译android 4.0时提示如下错误:   You are attempting to build with the incorrect version of java. Your versi ...

  2. webApi 数据绑定 获取

    直接上代码: <html> <head> <meta name="viewport" content="width=device-width ...

  3. Servlet 之 GenericServlet

    我们都知道javaweb中servlet的三大组件 servlet filter listener 实现动态资源的  是可以继承  Servlet接口,或者集成GenericServlet .Http ...

  4. Effective C++阅读笔记_条款2:尽量以const,enum,inline替换#define

    1.#define缺点1 #define NUM 1.2 记号NUM可能没有进入记号表,在调试或者错误信息中,无法知道1.2的含义. 改善:通过const int NUM = 1.2; 2.#dein ...

  5. iOS 运行时

    1.点击每一个cell都要跳转到一个控制器,swich会很麻烦,那么可以用运行时来进行跳转. a. 定义一个数组用来存放控制器的名字 - (NSArray *)controllerArr{ if (_ ...

  6. code first 创建和初始化数据库

    1.前言 Code First是Entity Framework提供的一种新的编程模型.通过Code First我们可以在还没有建立数据库的情况下就开始编码,然后通过代码对象来生成数据库.当然我们在实 ...

  7. C实现栈和队列

    这两天再学习了数据结构的栈和队列,思想很简单,可能是学习PHP那会没有直接使用栈和队列,写的太少,所以用具体代码实现的时候出现了各种错误,感觉还是C语言功底不行.栈和队列不论在面试中还是笔试中都很重要 ...

  8. 【MongoDB】递归获取字段更新表达式,更新复杂数据类型对象

    在实际更新Mongo对象时发现,原有的更新代码无法更新复杂的数据类型对象.恰好看到张占岭老师有对该方法做相关的改进,因此全抄了下来. 总的核心思想就是运用反射与递归,对对象属性一层一层挖掘下去,循环创 ...

  9. 2016 Multi-University Training Contest 1 F.PowMod

    PowMod Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total Su ...

  10. (MTT)连续能量函数最小化方法

    (MTT)连续能量函数最小化方法 Multitarget tracking Multi-object tracking 连续能量函数 读"A.Milan,S. Roth, K. Schind ...