Git

Git的特点:

  • Git存储的是文件快照, 即整个文件内容, 并保存指向快照的索引
  • 分布式

原理

这个之前面试实习的时候被问到过, 搞懂基本原理还是很重要的

Git的目录结构在执行git init后文件夹下的.git目录

子目录名 简要描述
branches Git项目分之信息
condig Git项目配置信息
description Git项目描述信息
HEAD 指向Git项目当前分支的头指针
hooks 默认的hooks脚本, 指Git项目要忽略的文件
objects 数据对象, 有: commit, trees, blobs, tags
refs 指向所有分支的指针

快照原理

Git通过对文件进行SHA-1计算作为文件的内容生成一个40位的Hash值, Hash值相同, 则文件内容相同

存储区

git的四个存储区

  • 工作区
  • 暂存区
  • 本地仓库
  • 远程仓库

  • git add file 就是把文件添加到暂存区
  • git commit -m "说明" 提交更改, 就是把暂存区的所有内容提交到本地仓库, 即当前分支, git会自动创建一个master分支

暂存区的好处:

  • 能够实现部分提交
  • 为了不在工作区创建状态文件, 污染工作区
  • 暂存区记录了文件的的修改时间, 提高文件的比较效率

分支

git速度比较快的原因是分支就是一个指向Commit的指针, 每次提交, 只需要移动这个指针就行了

Git的一些知识的更多相关文章

  1. 程序员必知必会Git的小知识

    单人开发 1.初始化一个仓库 git init //cd到你工作的文件夹,初始化git仓库,默认会生成.git隐藏目录 2.配置自己的信息(Git 不喜欢不愿透漏姓名的人) git config -- ...

  2. git github简单知识

    Git 常用命令 git init here -- 创建本地仓库(repository),将会在文件夹下创建一个 .git 文件夹,.git 文件夹里存储了所有的版本信息.标记等内容 git remo ...

  3. Git入门——基础知识问答

    问题一:为什么要选择Git作为Android开发的版本控制工具?     答:1)git是android项目和社区的统一语言.            2)高通版本发布频繁,需要与平台及时同步,快速re ...

  4. Git的相关知识

    什么是git        Git(读音为/gɪt/.)是一个开源的分布式版本控制系统,可以有效.高速地处理从很小到非常大的项目版本管理.Git 是 Linus Torvalds 为了帮助管理 Lin ...

  5. git 的相关知识

    参考文章 git checkout HEAD <file> :  master/HEAD -> index -> work directory index 暂存区有两行信息.分 ...

  6. GIt的基本知识

    以前已经把git 看过一遍了,由于好久没有用它 ,现在已经忘了.现在呢,要用它进行同步代码,所以呢,我打算记一记,再复习复习. 参考文件:https://git-scm.com/book/zh/v2 ...

  7. [工具] Git版本管理(知识总结)

    对以下文档进行了简要总结,方面复习: [工具] Git版本管理(一)(基本操作) [工具] Git版本管理(二)(分支) [工具] Git版本管理(三)(工作流) [工具] Git版本管理(四)(贡献 ...

  8. git的基础知识

    git 分布式版本控制工具 具备的功能 协同开发 多人并行不悖修改服务器端的同一个文件 数据备份 不仅保持目录和文件当前状态,还能保存每一个提交的历史版本 版本管理 保存每一个版本的文件信息的时候做到 ...

  9. 认识Git并了解Git的基本知识

    目录 认识Git 版本控制 版本控制的发展史 安装Git Git的核心概念 Git的使用原理 Git的工作流程 Git的基本流程 Git与SVN的区别 Git的基本使用 初始化Git 创建一个Git仓 ...

随机推荐

  1. Linux网络服务12——NFS共享服务

    Linux网络服务12--NFS共享服务 一.NFS简介 端口号:TCP.UDP 111端口 NFS(Network File System)网络文件系统,是一种基于TCP/IP传输的网络文件系统协议 ...

  2. CYQ.Data V5 分布式自动化缓存设计介绍(二)

    前言: 最近一段时间,开始了<IT连>创业,所以精力和写的文章多数是在分享创业的过程. 而关于本人三大框架CYQ.Data.Aries.Taurus.MVC的相关文章,基本都很少写了. 但 ...

  3. csv导入数据到mysql

    csv表中含有中文字符,具体实现代码示例: load data infile 'C:\\Users\\Administrator\\Desktop\\import\\CELLutf.csv' into ...

  4. 简单的视频采集demo

    打算做个简单的聊天软件,其中一个我没做过的,就是视频采集. 在网上查了许久资料,终于搞清楚了dshow采集视频的流程 参考资料如下: https://msdn.microsoft.com/en-us/ ...

  5. JAVA基础——内部类详解

    JAVA内部类详解 在我的另一篇java三大特性的封装中讲到java内部类的简单概要,这里将详细深入了解java内部类的使用和应用. 我们知道内部类可分为以下几种: 成员内部类 静态内部类 方法内部类 ...

  6. ng-cordova(插件库)

    ng-cordova 环境配置 1.执行以下命令 bower install ngCordova 2.引用文件(在引用cordova.js之前引用) <script src="lib/ ...

  7. Pycharm直接连接Github

    Pycharm可以说是使用Python语言开发者的必备利器.高校学生有学生邮箱就可以免费使用,着实省了我不少银两.附个license图: Git是一个开源的分布式版本控制系统,用以有效.高速的处理从很 ...

  8. 使用freemarker模板生成word文档

    项目中最近用到这个东西,做下记录. 如下图,先准备好一个(office2003)word文档当做模板.文档中图片.姓名.性别和生日已经使用占位符代替,生成过程中将会根据实际情况进行替换. 然后将wor ...

  9. spring +springmvc+mybatis组合applicationContext.xml文件配置

    <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.spr ...

  10. requireJS 源码(二) data-main 的加载实现

    (一)requireJs 的整体结构: requireJS 源码 前192行,是一些 变量的声明,工具函数的实现 以及 对 三个全局变量(requirejs,require,define)若被占用后的 ...