`
toilet22
  • 浏览: 2302 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

Git入门教程_01_Git基础

git 
阅读更多
本文整理自Git官方的教程。http://git-scm.com/book/zh/v1/%E8%B5%B7%E6%AD%A5-Git-%E5%9F%BA%E7%A1%80

一,Git是什么
     Git最初是linus大神写的用来管理linux开发的工具,可以说是现在程序员必不可少的代码管理神器。它被广泛运用于代码保存与分享、版本控制、团队协作等诸多方面。
     使用Git 的几大好处(功能)如下:
     1,代码一旦提交,就被Git记录在案,可以回到历史上任何一个提交的时刻,查看并编辑代码。
     2,通过分支,能够非常好地维护开发的流程(比如新功能的开发和临时bug的修复),以及在团队成员之间进行协作。(这是下一篇的内容)
     3,绝大多数操作都在本地完成,只有需要读写远程仓库时才需要联网。


二,Git的基本原理

1,使用快照记录文件
     在Git之前的很多版本控制工具(CVS,Subversion,Perforce等)关心的是文件内容的具体差异,即每次记录有哪些文件更新,以及具体更新了什么内容。如下图



    
     而Git则只关心数据的整体是否变化,它保存的不是便后变化的差异,而是对文件的整体做快照,记录到微型的文件系统中。每次提交更新时,对于变化了的文件,Git会做一个快照,并保存指向这次快照的索引;而对于没变化的文件,Git会对之前的快照做一个连接。如下图。



     让我们来看一下Git在提交的时候具体做了什么。我们假设当前工作目录中有三个文件,我们先将它们暂存,再提交。
     暂存操作:会对每一个文件计算校验和(SHA-1哈希字符串),然后将单独跟前版本的文件快照保存到Git仓库中(Git使用blob类型的对象存储这些快照),并将校验和加入暂存区域。
     提交操作:此时Git会先计算每一个子目录的校验和(本例中为根目录),然后在Git仓库中将这些目录保存为树对象;然后Git创建新的提交对象,包含了提交信息、指向该树对象的指针,这样一来,就可以此后需要的时候找到此次快照的内容。
     此时,从概念上说,仓库中的各个对象保存的数据和相互关系看起来如下图所示:




2,Git中的文件状态
     Git眼中的文件分为4中状态:未跟踪的(untracked),已提交的(committed),已修改的(modified),已暂存的(staged)。
     未跟踪的:所有新建的文件,没有使用git add命令添加到Git的跟踪清单中的文件,都处于未跟踪状态。
     已提交的:已经被Git保存了(已经存储了快照),并且没有再做过修改的文件。此时文件时干净安全的。
     已修改的:此前保存了快照,但是又做了新的修改,但还没有被git add命令添加到暂存区域。
     已暂存的:处于跟踪清单中的文件,做了新的修改后,被git add 命令将当前文件的快照添加到了已暂存区域,将在下次提交时保存。

3,Git的工作区域
     和上述的文件的4中状态相对应的,是Git的3个工作区域:工作目录、暂存区域、以及Git目录(本地仓库)
     Git目录:每个项目都有一个Git目录(git clone出来的项目,Git目录就是其中的.git目录),它是Git用来保存元数据和对象数据库的地方,实际上每次克隆镜像仓库的时候,拷贝的就是这个目录的数据。
     工作目录:每次我们从仓库中选中某个版本,并在该版本下工作的时候,实际上就处于工作目录下。工作目录实际上是从Git目录中的压缩对象数据库中提取出来的。
     暂存区域:当我们在工作目录下完成了修改,就需要将快照保存到暂存区域。暂存区域实际上是Git目录中的一个简单的文件。我们最终还需要将暂存区域中的快照转储到Git目录中永久保存起来。

4,Git的工作流程
     综上所述,Git的基本工作流程如下:
     1,在工作目录中修改文件。
     2,对修改后的文件进行快照,保存到暂存区域。
     3,提交更新,将暂存区域中的快照转存到Git目录中。

  • 大小: 22.9 KB
  • 大小: 27.5 KB
  • 大小: 37.4 KB
分享到:
评论

相关推荐

    GIT教程_git入门_git_

    本教程绝对面向初学者,没有接触过版本控制概念的读者也可以轻松入门,不必担心起步难度;

    GitLab操作指南_git学习指南_git入门_git_gitlab_

    GitLab操作指南.pptx文件可能包含了以下内容:Git基础概念和命令详解,GitLab注册与项目创建,SSH密钥配置,仓库的克隆与推送,分支管理,Merge Request的使用,CI/CD的基本配置,以及如何利用GitLab进行团队协作等...

    git中文入门教程_离线html.rar

    Git中文入门教程旨在帮助初学者理解并掌握Git的基本概念、...本教程提供的"start_html_git入门教程.htm"将详细介绍这些概念,帮助你快速上手Git。同时,www.yiidian.com可能提供更多的在线学习资源,辅助你的学习过程。

    猴子都能懂的Git入门 HTML整站离线 2017-07

    "猴子都能懂的Git入门"这个标题暗示了这是一个适合初学者的Git教程,旨在用易于理解的方式介绍Git的基础知识。下面将详细阐述Git的核心概念和常用操作。 1. **Git基础概念**: - **仓库(Repository)**:Git中的...

    Git教程 从入门到精通

    ### Git教程从入门到精通——知识点详解 #### 一、Git简介 - **Git是什么**:Git是一款目前世界上最先进的分布式版本控制系统。它被设计用于高效处理从小型到大型项目的版本控制,尤其适合软件开发项目。 - **Git...

    git_real_slides

    "git_real_slides"这个压缩包显然包含了关于Git的详细应用教程,涵盖了从基础部署到深入的代码管理策略。让我们一起深入探讨Git的各个关键知识点。 首先,Git的安装和配置是入门的第一步。在不同的操作系统(如...

    git入门培训pptgit入门培训ppt

    git入门培训ppt,git使用培训,git发展,git分支的使用,git中的基本使用说明和以及基本命令, git入门培训ppt,git使用培训,git发展,git分支的使用,git中的基本使用说明和以及基本命令

    猴子都能懂的GIT入门.pdf

    将网页版的猴子都能懂的GIT(https://backlog.com/git-tutorial/cn/)转换成PDF格式,并且已添加书签,感谢这个作者编写的教程

    猴子都能懂的Git入门-整站

    "猴子都能懂的Git入门-整站"是一个专门为初学者设计的Git学习资源,旨在用简单易懂的方式讲解Git的基础知识,并逐步引导进阶到高级应用。 入门篇主要涵盖以下内容: 1. Git安装:讲解如何在Windows、Mac OS X和...

    git入门教程.docx

    Git 入门教程 Git 是目前世界上最先进的分布式版本控制系统,由 Linus 在 2005 年创建。 Git 的诞生离不开 Linux 的发展,Linux 系统不断发展,已经成为最大的服务器系统软件了。 Linux 的代码是如何管理的呢?在 ...

    03Git入门Git初始设定 git init

    03★Git入门★Git初始设定_git_init

    Git入门教程1

    【Git入门教程1】 Git是一种分布式版本控制系统,相较于CVS和SVN,它拥有许多显著的优势,这使得酷讯公司选择了Git作为其软件版本管理工具。Git的主要特点包括: 1. **简易初始化**:使用`git init`和`git commit ...

    idea使用教程2017-06-01.rar_IDEA教程_git教程_maven idea_使用手册

    《IDEA教程:从入门到精通》 IntelliJ IDEA,简称IDEA,是一款由JetBrains公司开发的Java集成开发环境,以其强大的代码自动补全、重构功能和友好的界面深受开发者喜爱。本教程旨在帮助你全面掌握IDEA的使用,从安装...

    Git权威指南_git_

    首先,我们从基础开始,Git的安装和配置是入门的第一步。在Windows、Mac OS X或Linux上,你可以通过官方的安装程序或者包管理器来安装Git。配置包括设置用户名和电子邮件,这是为了在提交时记录作者信息。 接着,...

    猴子都能懂的GIT入门

    "猴子都能懂的GIT入门"这个主题,旨在让初学者,甚至是对技术不太熟悉的人都能轻松理解Git的基本概念和操作。Git的核心价值在于它能够跟踪代码的历史版本,允许团队成员在不影响主分支的情况下各自开发,然后通过...

    git入门教程

    本篇文章将为初学者提供一个简明的Git入门教程,涵盖了Git与SVN的区别、Git分支与流程、以及一些基础命令的使用。 ### Git与SVN的区别 首先,我们需要了解Git与另一款常用的集中式版本控制系统SVN的主要差异。SVN...

    06Git入门把握Git状态 git status reset

    06★Git入门★把握Git状态_git_status_reset

Global site tag (gtag.js) - Google Analytics