(1)Git版本库(repository)

一个简单的数据库,包括所有用来维护与管理项目的修订版本和历史的信息。

Git维护两个主要的数据结构:

  • 对象库(object store)—在复制操作时能进行有效复制,用来支持完全分布式VCS的一种技术。
  • 索引(index)—暂时的信息,对版本库来说是私有的,并且可以在需要时按需求进行创建和修改。

(2)Git对象类型

1、块(blob)

文件的每一个版本表示为一个块

2、目录树(tree)

代表一层目录信息

3、提交(commit)

保存版本库中每一次变化的元数据,包括作者、提交者、提交日期和日志消息

4、标签(tag)

分配一个任意的可读名字给一个特定对象,通常是提交对象

(3)索引

是一个临时的、动态的二进制文件,描述整个版本库的目录结构。

索引捕获项目在某个时刻的整体结构的一个版本。

工作原理:

作为开发者,通过执行Git命令在索引中暂存变更,索引会记录和保存这些变更,保障它们的安全直到开发者准备提交。

(4)可寻址内容名称

Git对象库被组织及实现成一个内容寻址的存储系统。每个对象都有一个唯一的名称,如:0a3071601cc10777e271a952ead46cffba233e24

(5)Git追踪内容

1、当Git放置一个文件到对象库中时,它基于数据的散列值而不是文件名,即便两个文件内容一样,无论是否在相同的目录,Git只保存一份块形式的内容副本。

2、当文件从一个版本变到下一个版本时,Git的内部数据库有效地存储每个文件的每个版本,而不是它们的差异。

(6)打包文件

创建一个打包文件,Git首先定位内容非常相似的全部文件,然后为它们之一存储整个内容,之后计算相似文件之间的差异并只存储差异。

(7)对象库图示

(8)Git中的文件分类

  • 已追踪的(Tracked)
  • 被忽略的(Ignored)
  • 未追踪的(Untracked)

(9)git commit的一些注意事项

git commit --all

-a 或 --all 会导致执行提交之前自动暂存所有未暂存和未追踪的文件变化,包括从工作副本中删除已追踪的文件。

(10)其他使用技巧

查看版本库文件信息

  1. [root@localhost public_html]# git ls-files --stage
  2. 100644 8638631b774c05291d21eb5541aa546d2bd6cf85 0 foo.html
  3. 100644 8638631b774c05291d21eb5541aa546d2bd6cf85 0 index.html

将一个文件由已暂存转化为未暂存

  1. [root@localhost public_html]# git rm --cached index.html

强制删除文件

  1. [root@localhost public_html]# git rm -f index.html

恢复文件的旧版本

  1. [root@localhost public_html]# git checkout HEAD -- index.html

取消已缓存的内容

  1. [root@localhost public_html]# git reset HEAD -- hello.php

GIT使用—一些概念的更多相关文章

  1. git 利用分支概念实现一个仓库管理两个项目

    需求描述:开发了一个网站,上线之际,突然另一个客户说也想要个一样的网站,但网站的logo和内部展示图片需要替换一下,也就是说大部分的后台业务逻辑代码都是一致的,以后升级时功能也要保持一致:刚开始想反正 ...

  2. Git 入门:概念、原理、使用

    出处: git入门:概念.原理.使用 git和Github 概念 Git --- 版本控制工具(命令). git是一个开源的分布式版本控制系统,用以有效.高速的处理从很小到非常大的项目版本管理.git ...

  3. GIT入门笔记(1)- Git的基本概念

    一.概念和定义 1.git是什么 许多人习惯用复制整个项目目录的方式来保存不同的项目版本,或许还会改名加上备份时间以示区别.这么做唯一的好处就是简单.不过坏处也不少:有时候会混淆所在的工作目录,一旦弄 ...

  4. Git 的核心概念解读

    本文不是Git使用教学篇,而是偏向理论方面,旨在更加深刻的理解Git,这样才能更好的使用它,让工具成为我们得力的助手. 版本控制系统 Git 是目前世界上最优秀的分布式版本控制系统.版本控制系统是能够 ...

  5. git的一些概念和技巧

    1. 分支代表最后三个commit(即HEAD, HEAD^和HEAD~2),前一个commit,也用HEAD~1 2. 查看一个文件的改动历史git log (--pretty=oneline) - ...

  6. 理解 Git 的基本概念 ( Merging Collaborating Rebasing)

    合并 Merging 在分支上开发新功能后,如何把新功能加入到主分支,让其它人得到你的修改呢?你需要使用命令 git merge 或 git pull. 这两个命令的语法如下: git merge [ ...

  7. git分支合并概念

    git merge命令用于合并指定分支到当前分支. git merge命令用于合并指定分支到当前分支. git merge命令用于合并指定分支到当前分支. 创建与合并分支 阅读: 931277 在版本 ...

  8. Git的一些概念(二)

    一.Git的结构 二.Git和代码托管中心 代码托管中心的任务:维护远程库 1. 局域网内 GitLab 服务器 -- 可以自己搭建 2. 外部环境 GitHub 码云 三.本地库和远程库 1. 团队 ...

  9. Git 的核心概念

    本文不是Git使用教学篇,而是偏向理论方面,旨在更加深刻的理解Git,这样才能更好的使用它,让工具成为我们得力的助手. 版本控制系统 Git 是目前世界上最优秀的分布式版本控制系统.版本控制系统是能够 ...

随机推荐

  1. 开启GitHub模式,now!

    (原文地址为:http://www.karottc.com/blog/2014/06/15/current-doing/) 最近看到了一篇文章,该文章的作者将自己连续177天在github上commi ...

  2. ChemDraw 15.1 Pro插入阿尔法可以这样做

    在理工科学科学习过程中,大家都会遇到各种希腊字母,而阿尔法(α)又是最常见的一个.最新版本ChemDraw 15.1 Pro的功能更加卓越,在很多功能上都进行了优化,操作更简便.其中,就可以很好的在公 ...

  3. Django 找不到模版报错" django.template.exceptions.TemplateDoesNotExist: index.html"

    解决办法:在setting.py的TEMPLATES‘DIRS'[]加入模版路径 os.path.join(BASE_DIR, 'templates') TEMPLATES = [ { 'BACKEN ...

  4. BZOJ 3261 最大异或和 可持久化Trie树

    题目大意:给定一个序列,提供下列操作: 1.在数组结尾插入一个数 2.给定l,r,x,求一个l<=p<=r,使x^a[p]^a[p+1]^...^a[n]最大 首先我们能够维护前缀和 然后 ...

  5. 使用ghost硬盘对拷备份系统

    公司有台server装了OA系统.要备份数据.同一时候假设系统出错之后可以及时回复.所以有买了块同型号硬盘. 用ghost的硬盘对拷功能,将原硬盘的系统和数据拷到新硬盘上.新硬盘挂到server上.当 ...

  6. python bottle学习(四)request.quest/query_string/params/body等方法介绍

      假设url:http://0.0.0.0:18082/api/cluster/group?wzd=111&abc=cc 方法类型:POST,body是{"name":& ...

  7. [原创]Nexus5 移植OneStep

    OneStep 简介 https://github.com/SmartisanTech/android One Step 涉及的工程列表: frameworks_base (需要更改WindowMan ...

  8. 60、常规控件(3)Snackbar-可操作的提示框,Toast升级版

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app=&quo ...

  9. 网站速度优化模块HttpCompressionModule

    为了优化网站的访问速度,准备采用HttpCompressionModule 6对传输数据进行压缩,下载了HttpCompressionModule 6 , 并按照示例程序中的web.config配置了 ...

  10. Python创建数组

    1  创建数组 array函数 >>> a=([1,2],[3,4]) >>> array(a) array([[1, 2], [3, 4]]) arange函数: ...