什么是版本控制

版本控制是一套系统,按时间记录某一个或一系列文件的变更,查看以前的特定版本。

使用版本控制系统,你可以将文件或者整个项目恢复到先前的状态,还可以对以前的文件进行对比。

本地版本控制系统

本地版本控制系统就是使用简单的数据库来保存文件的所有变更。

RCS是一个常用的VCS工具,在Mac OS操作系统中,只要你安装了开发者工具,就会包含一个rcs命名。RCS回我在磁盘上以一种特殊的格式保存补丁集(文件之间的差异)。通过叠加补丁来将文件恢复到某个历史状态。

集中式版本控制

为解决不同系统之间的协作,集中式版本控制系统应运而生。这类系统,都有一个包含文件所有修订版本的单一服务器,多个客户端可以从这个中心位置检出文件。

这种方案与本地版本控制系统相比有多方面的优势,比如。所有人都可以一定程度的掌握其他人的进展,管理员可以控制所有人的权限。同时维护一个集中的版本控制系统相比在每台客户机上维护要简单的多。

但是这种方案也有一定的缺陷,就是当服务器单点故障,会导致这期间所有人都不能协作或提交更改,如果中央数据库硬盘受损,且无备份则就一无所有。

分布式版本控制系统

为了解决集中式版本控制系统的问题,进而出现了分布式版本控制系统。对于分布式系统来说,客户端不仅仅是检出文件的最新快照,而是对代码仓库的完整镜像。这样子,不论是那个服务器发生故障,每一个客户端都可以使用本地的镜像对服务器进行修复。每一次检出都是对数据的一次完整备份。

除此之外,还可以很好的处理多个远程仓库,可以协同不同的项目。

Git

Git是由Linux开发社区在汲取BitKeeper使用过程中的经验教训的基础上,开发出了自己的版本控制系统。

具有一下的特点。

  • 速度快
  • 设计简洁
  • 对于非线性开发强有力的支持(多个并发分支)
  • 完全的分布式设计
  • 能够有效的处理大型的项目

Git基础

Git与其他版本控制系统最大的不同在于对待数据的方式。其他大多数版本控制系统以文件列表的方式存储信息。这类系统将其存储的信息视为一组文件以及对这些文件随时间作出的更改。

Git则是将数据视为一个微型的文件系统的一组快照。每次提交或在Git中保存项目的状态时,Git会抓取一张所有文件当前状态的快照,然后存储一个指向该快照的引用。

Git的完整性

Git的完整性是通过检验和来保证的,他所采用的校验和机制是SHA-1散列。Git中的所有数据在存储前都会执行校验和计算,随后以校验和来引用对应的数据。

Git通常只增加数据

在Git中通常都是忘Git数据库中添加数据,很难执行难以撤销的操作或者将数据删除。

三种状态(已修改、已暂存、已提交)

  • 已修改:表示改动了文件,但是还未保存到Git数据库
  • 已暂存:表示将对修改的文件的当前版本做出了标识并将其加入下一次要提交的快照中
  • 已提交:表示数据已经被安全的保存入本地数据库中了

  • 工作目录:是项目的本地目录
  • 暂存区:是一个文件,一般位于Git目录中,保存了下次要提交的内容的相关信息。将修改的文件暂存进暂存区,这个地方就相当于一个临时的中转站。
  • 仓库:是保存项目元数据和对象数据库的地方。当把暂存区的数据进行提交,就是将数据保存进仓库。

Git的基本工作流如下:

  1. 修改工作目录中的文件。
  2. 将修改的文件暂存进暂存区,生成快照。
  3. 将暂存区的文件进行提交,将快照永久的保存进Git目录中。

Git的安装

在https://git-scm.com/downloads进行下载安装即可

Git首次配置

用户身份

安装完成后首先我们就要设置用户名和电子邮箱地址。Git的每次提交都会用到这些信息,当然Git不会验证这些东西的真实性。设置命令如下:

git config --global user.name 'myname'

git config --global user.email ***@163.com

如果传入了--global选项 则后续的项目都会使用这个用户名和地址,如果你在别的项目不想使用当前用户名和邮箱,可以使用不带--global的命令。

检查个人设置

git config --list来查看所有的设置,如下:

你也可以查看某个特定的值,例如:

获取帮助

你可以输入git --help来获取其他命令的信息

当然你可以通过命令来获取关于Git的任何命令的帮助页面,例如:

当去输入 git help config就会跳转到相关的页面

当然你可以通过命令来获取关于Git的任何命令的帮助页面,例如:

当去输入 git help config就会跳转到相关的页面

[外链图片转存中…(img-uxIgPoOl-1678625091084)]

当然这是本地文件,不需要网络也可以查询。

【Git从入门到精通】Git入门相关推荐

  1. python3入门到精通pdf-Python3入门到精通实战特训

    原标题:Python3入门到精通实战特训 随着时间的推移,python2.7版本很快就要停止官方更新了.如果你还没来及正式考虑版本迁移问题,或者你是一个python新手.那么就很有必要一试本课程,一方 ...

  2. seo从入门到精通_SEO入门到精通(七):SEO工作的流程是什么?

    刚入门seo会对这个行业的工作流程产生疑问,或者因为自己学习的seo知识比较零散,无法去把控seo工作的整体流程,本文会给大家讲解下企业站通用的seo优化流程: 行业概况分析→企业实况分析→竞品分析→ ...

  3. java从入门到精通_Java入门到精通、学习路线、就业方向、薪资及前景分析(上篇)...

    今天就大家最关心的Java热门问题进行简要分析,希望能对想要学习或是正在学习Java的小伙伴能够有所帮助~(大家多多关注呦~) 一.首先我们要了解Java是什么? 好学吗? Java是一种广泛使用的计 ...

  4. Mybatis从入门到精通二(入门详解)

    Mybatis从入门到精通二(想学Mybatis,看了这一篇你就不需要其他的了) 本课程分为两天第一天的请参考: https://blog.csdn.net/weixin_43564627/artic ...

  5. MyBatis入门到精通——Mybatis入门篇

    目录 一.什么是 MyBatis? 二.入门案例 (1)创建maven项目 (2)引入依赖包 (3)创建数据库执行sql脚本 三.入门程序源码 (1)User.java (2)UserMapper.j ...

  6. python编程第5版_正版 Python学习手册(原书第5版) python编程从入门到精通 python入门 计算机网络...

    上册 前言1 部分使用入门 章问答环节21 人们为何使用Python21 软件质量22 开发者效率23 Python是一门"脚本语言"吗23 好吧,Python的缺点是什么25 如 ...

  7. JPA入门到精通 - JPA入门

    为什么80%的码农都做不了架构师?>>>    概述 自己用JPA很长时间了,但没有系统学习,通过课程自学下平时比较少碰到的内容,并笔记. JPA概述 什么是JPA JPA是Java ...

  8. java线程入门到精通_JAVA入门到精通6.1-Java线程的概念

    和其他多数计算机语言不同,Java内置支持多线程编程(multithreaded programming). 多线程程序包含两条或两条以上并发运行的部分.程序中每个这样的部分都叫一个线程(thread ...

  9. 微服务从入门到精通【入门篇一】

    前言 博主是一名97年的程序员,在职场上摸爬滚打了一年.从毕业至今,生活可以说是五味杂陈.这篇文章是我的第一篇文章,后面会持续更新,希望看完这篇文章的读者能有自己的感悟和收获.本篇文章主要带大家熟悉微 ...

  10. MATLAB从入门到精通:MATLAB识别 自带手写数字集的CNN(LeNet5)

    一.前言 以下是博主整理的精品专栏,喜欢的小伙伴可自行订阅 R语言实战应用精讲50篇  R语言函数解析及案例实战应用 MATLAB-30天带你从入门到精通 MATLAB入门知识,函数原理解析及案例解析 ...

最新文章

  1. Open×××的Linux内核版,鬼魅的残缺 part I:The PROTOCOL
  2. Oracle 原理: 闪回 flashback
  3. 在 Excel 里使用 ODBC 读取 SAP BTP 平台上 CDS view 的数据
  4. 苹果通知推送服务(APNS)关键特性摘要
  5. 给 IConfiguration 写一个 GetAppSetting 扩展方法
  6. 通过解析器向DNS服务器发出查询
  7. NHibernate Issues之1898:命名查询
  8. python的输入来源包括啥_Python中使用 input 函数来获取输入
  9. 动态规划实战1-leetcode 983.Minimum Cost For Tickets
  10. MicroMsg.SDK.WXMsgImplComm: ignore wechat app signature validation
  11. CEBIT首现移动电子硬盘,大小如名片
  12. 计算机等级考试四级网络工程师真题,计算机等级考试四级网络工程师试题
  13. chrome浏览器打开网页排版错乱
  14. underfined 与 null 的区别
  15. web3.0 nft 是什么? nft的意义是什么?
  16. Octave是什么,以及Octave online的使用(相当于open source的matlab)
  17. 嵌入式系统硬件体系设计(一)
  18. 计算机论文图表,核心方法:自动生成毕业论文标题目录和图表目录的方法
  19. 队列 如何 判断 已满
  20. 移动APP性能优化的建议

热门文章

  1. 无需编程,DIY自己智能小车的Android蓝牙遥控软件(一)
  2. 无需编程,DIY自己智能小车的Android蓝牙遥控软件(三)
  3. 【方法/函数】 矩阵相乘
  4. java五大浏览器,[Java教程]各主流浏览器(PC、移动端)userAgent属性信息
  5. netflix自动续费关闭_如何禁用Netflix的自动播放预览
  6. 饥荒插件制作应注意的几个问题
  7. 台式计算机上的fn键是哪个,笔记本上fn是哪个键fn键功能详解【方法详解】
  8. pma连接,报错10061
  9. Win10《芒果TV》更新v3.8.30流星版:优化稳定性、升级无边框播放体验
  10. 单个Java文件打成可执行JAR包