关于版本控制

一、什么是版本控制

  1. 版本控制(Version Control Systems)版本控制(Revision control)是一种软件工程技巧

  2. 在开发的过程中,确保由不同人所编辑的同一档案都得到更新

  3. 举例

    我们通常都是手动的重命名一个文件进行备份的

    hello.java改成hello1.java或者hello.java.bak等形式

    然后这种方式对于单个文件我们还能够管理,但是对于整个项目而言,就会成为噩梦了!!!

  4. 文件版本常见问题

    合并代码

    两个人写的代码如何合并到一起

    版本回退

    在写代码过程当中, 代码出现错误,如如何才能加回到以前没有错误的代码

版本管理工具

集中式管理

特点

集中式版本
控制系统,版本库是集中存放在中央服务器的
而干活的时候,用的都是自己的电脑
所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器
中央服务器就好比是一个图书馆
你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆
结构图

缺点
集中式版本控制系统最大的毛病就是必须联网才能工作
所有的版本都在一个服务器上面
如果服务挂了, 所有记录的版本都没了

分布式管理

特点

​ 分布式版本控制系统,则不需要中央服务器

​ 每个协同开发者都拥有一个完整的版本库

​ 这么一来,任何协同开发者用的服务器发生故障

​ 事后都可以用其它协同开发者本地仓库恢复

结构图
使用方式
在实际使用分布式版本控制系统的时候,其实很少在两人之间的电脑上推送版本库的修改,
因为可能你们俩不在一个局域网内,两台电脑互相访问不了,也可能今天你的同事病了,他的电脑压根没有开机。
因此,分布式版本控制系统通常也有一台充当“中央服务器”的电脑,
但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。

二、git版本管理

git介绍

​ git是一款开源的分布式版本管理工具,作者Linux之父-Linus

​ 当初Linus 仅仅是为了辅助Linux内核的开发才一并开发了这个至今为止世界上最快的、最简单的版本管理工具

软件安装

去到官方网站下载GIT安装包

https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git

跟着步骤一步步来



















三、安装完毕之后介绍Git工作状态、原理、工作流程

1. Git 管理项目时,文件流转分为三个工作区域

Git 的工作目录
暂存区域
以及本地仓库

2. 对于任何一个文件,在 Git 内都只有三种状态

3. 三种状态

1.已修改(modified)
已修改表示修改了某个文件,但还没有提交保存
2.已暂存(staged)
已暂存表示把已修改的文件放在下次提交时要保存的清单中
3.已提交(committed)
已提交表示该文件已经被安全地保存在本地数据库中了

4. 原理流程步骤

1. 工作目录
从项目中取出某个版本的所有文件和目录,用以开始后续工作的叫做工作目录
这些文件实际上都是从 Git 目录中的压缩对象数据库中提取出来的
接下来就可以在工作目录中对这些文件进行编辑
2. 暂存区域
只不过是个简单的文件
.git目录之下,名为index,它一般很小,一般不超过1KB左右
一般都放在 Git 目录中
有时候人们会把这个文件叫做索引文件
暂存区这个索引文件里面包含的是文件的目录树,像一个虚拟的工作区,在这个虚拟工作区的目录树中,记录了文件名、文件的时间戳、文件长度、文件类型以及最重要的SHA-1值,文件的内容并没有存储在其中
暂存区的作用
除非是绕过暂存区直接提交,否则Git想把修改提交上去,就必须将修改存入暂存区最后才能commit。每次提交的是暂存区所对应的文件快照
3. git目录(本地仓库)
当我们在某个目录下运行git init命令后,在该目录下便会生成一个.git的子目录,这个目录是隐藏的。
它是 Git 用来保存元数据和对象数据库的地方,这个目录可以说是Git的核心
每次克隆镜像仓库时,实际上拷贝的这个目录里的内容而已

5. 工作流程

1、在工作目录中修改文件。
2、暂存文件,将文件的快照放入暂存区域。
3、提交更新,找到暂存区域的文件,将快照永久性存储到Git仓库目录。

示图:

        #### git add ---> git commit --- > git push/git pull

这一期的Git简单介绍 就到这里啦---下一章节 Git的基本操作

【GIT-精讲】从零玩转Git-基础理论的更多相关文章

  1. 【GIT-精讲】从零玩转Git/GitHub/GitLab

    关于版本控制 一.什么是版本控制 版本控制(Version Control Systems)版本控制(Revision control)是一种软件工程技巧 在开发的过程中,确保由不同人所编辑的同一档案 ...

  2. 2015继续任性——不会Git命令,照样玩转Git

    最近事情比较多,一眨眼,已经半个月没有写博客了~不得不感慨光阴似箭啊!当然,2015年有很多让我们期待的事情,比如win10正式版..NET开源.VS2015等等.想想都让人兴奋啊~~ 为了迎接VS2 ...

  3. 玩转Git入门篇

    最近项目使用到Git管理项目,所以就学习了一番,随然网上关于 Git的文章铺天盖地,我还是整理下总结下自己学习Git相关笔记,希望也能帮助到需要他的小伙伴们,O(∩_∩)O~ 简介 Git 是分布式版 ...

  4. 我教你怎么玩转git

    我教你怎么玩转git 1.想要练习解决冲突? 很好办.创建本地分支,a,b, a上面,这样改.b上面那样改. 然后你就解决冲突就可以了. 可以merge 或者cheerypick 2.想要玩一个不要历 ...

  5. 玩转算法系列--图论精讲 面试升职必备(Java版)

    第1章 和bobo老师一起,玩转图论算法欢迎大家来到我的新课程:<玩转图论算法>.在这个课程中,我们将一起完整学习图论领域的经典算法,培养大家的图论建模能力.通过这个课程的学习,你将能够真 ...

  6. 玩转GIT

    远程代码覆盖本地 解决方法: 1.如果还没有 commit 的话,可以用 git checkout . 这样将使所有代码还原到最后一次 commit 的状态 2.如果已经 commit 了,最简单的方 ...

  7. 手把手教你玩转Git分布式版本控制系统! (转载)

    目录 Git诞生历史 Git环境准备 Git安装部署 Git常用命令 Git基本操作 Git管理分支结构 Git管理标签 GitLab安装部署 GitHub托管服务 Git客户端工具 Git诞生历史 ...

  8. 手把手教你玩转Git分布式版本控制系统!

    目录 Git诞生历史 Git环境准备 Git安装部署 Git常用命令 Git基本操作 Git管理分支结构 Git管理标签 GitLab安装部署 GitHub托管服务 Git客户端工具 1 Git诞生历 ...

  9. 玩转git分支

    搞个代码的管理工具,居然不弄上分支啥的东西.这简直太low了.尤其是在使用了传说中得很牛X的Git的时候,尤其显得low.拿着青龙偃月刀当烧火棍子使,关公知道了还不重反人间教育你!? 远程分支 要说分 ...

  10. 玩转git版本控制软件

    一.git的基本介绍 1.什么是git? git是个开源的分布式版本控制软件,用以有效.高速的处理从很小到非常大的项目版本管理.说白了就是个版本控制软件 2.git的使用方法 git软件是通过命令来实 ...

随机推荐

  1. git升级编译安装

    一.删除旧版本git 方法一. yum remove git -y (centos环境) apt-get remove git -y (Ubuntu环境) 方法二. which git [root@p ...

  2. vue2实现饼图Pie组件封装

    实现如下效果: 效果展示:https://code.juejin.cn/pen/7226656439941955644 如果不会请移步到官网的栗子,请点击查看 直接给大家上代码: 整体代码片段 1 & ...

  3. FreeRTOS 和裸机的区别

    FreeRTOS 和裸机的区别 01 FreeRTOS 简介 什么是FreeRTOS? 特点:实时性.可移植性.可扩展性 架构:内核.任务.调度器.通信机制 什么是裸机? 特点:无操作系统.直接操作硬 ...

  4. 一次考试的dp题

    很明显是dp 看题目的时候我们先进行初步的思考,发现一个性质 一个点时不可能被重复覆盖三次的很显然,如果一个点被覆盖了3次,这3个覆盖他的区间一定是有一个区间被完全包含的,因为有贡献的左右端点只有两个 ...

  5. client-go实战之九:手写一个kubernetes的controller

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本文是<client-go实战> ...

  6. 各种flex布局,拿来即用用过的都说好

    开发过程中,很多布局,用antd的栅格还是不灵活,flex弹性布局会更好用 Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性. 注意 ...

  7. [Python]常用知识

    Python 常用知识 编译型语言 和 解释性语言 解释性语言 编译型语言 概念 计算机不能直接的理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言的编写的 ...

  8. 全网最详细4W字Flink全面解析与实践(下)

    本文已收录至GitHub,推荐阅读 Java随想录 微信公众号:Java随想录 原创不易,注重版权.转载请注明原作者和原文链接 承接上篇未完待续的话题,我们一起继续Flink的深入探讨 Flink S ...

  9. Python 利用pandas和matplotlib绘制柱状折线图

    创建数据可视化图表:柱状图与折线图结合 在数据分析和展示中,经常需要将数据可视化呈现,以便更直观地理解数据背后的趋势和关联关系.本篇文章将介绍如何使用 Python 中的 Pandas 和 Matpl ...

  10. 什么是PIO

    PIO,最早是我在raspberry pi pico的介绍中偶然看到的一个新词 转载来在[https://zhuanlan.zhihu.com/p/347948344] 关于PIO的介绍如下: MCU ...