后端——工具——版本控制工具——Git——HelloWorld示例

  本篇演示Git的HelloWorld示例,主要内容有三个部分,Git安装,Git的HelloWorld示例,Git的目录结构。

1、安装

  在Window安装Git,需要安装两个软件,

  第一个是Git软件,它的下载地址是https://www.git-scm.com/download/,

  第二个是Git图形界面,推荐使用TortoiseGit,GitExtension,在官网上有各种类型的UI工具,下载地址是https://www.git-scm.com/download/gui/windows

  安装Git准备,Git 64位的安装包已下载。电脑上不存在Git。

准备完之后,安装Git的步骤如下:

第一步,运行exe安装程序,点击next,选择安装目录

第二步,选择组件(Component),全选上也没有问题

     第三步,在开始菜单创建Git文件夹。

  第四步,选择Git使用的编辑器。它的默认值是Vim,是Linux平台上的编辑器,这里我选择use Sublime Text as Git’s default editor。下拉列表可以看到其他编辑器,例如notepad++等。

  

   第五步,选取Git命令的运行环境。

  

   第一个选项Use Git from Git base only,只在git bash下执行git命令。若想要在cmd中执行git命令,后续可以修改环境变量,把install_dir/bin添加到环境变量中。

第二个选项,Git会安装一些Unix工具,并且会把Git命令存放的目录添加到环境变量中。

第三个选项,使用Git

第六步,建立SSL连接时,采用何种策略,这里选择OpenSSL,它是非常著名的生成证书的工具。有兴趣的可以研究下。

   第七步,选择换行符,我这里选择的是checkout as is, commit as is。现在主流的版本库是Github, 不是Linux服务器。若是在Window上有开发版本库,在Linux上有发布版本库,选择第一项。

  

    第八步,配置Git base仿真器,在windows上的话我选择MinTTy,因为cmd运行git命令这种方式,只需要配置环境变量即可,git bash和cmd的功能重复了。

   第九步,配置其他附加的,可选的功能

   开启文件系统缓存可以大幅度提升性能,这个必选。

允许Git的证书存放在Window证书管理中心,这个建立SSL连接时必选,不然自己手动添加比较麻烦。

允许软链接,在Linux系统中,有两种链接,软链接,硬链接。在window下不必开启。

第十步,点击install, 最后点击finish完成即可。

2、HelloWorld示例

  下述将演示Git,创建Git仓库,执行最基本的操作。步骤如下:

  第一步, 创建first_git_repo(名称随意)文件夹,进入文件夹,执行git init

  创建完成之后,会创建隐藏的.git文件夹。

第二步,创建Hello.txt文件,执行git add Hello.txt命令

Git版本库存在三种区域,工作目录,索引,底层的数据库。当创建Hello.txt文件时,它存在于工作目录下,执行add之后,它添加到索引中。

这个过程是称为”stage”,意思是指工作目录提交到底层版本库需要两个步骤,添加到索引中,之后再提交到本地版本库中。Stage的字典解释是a period or state that sth/sb passes through while developing or making process。在Git中指提交过程中的一个阶段。

第三步,执行git status

可以查看版本库的状态。

第四步,执行git commit -m “初始化提交”

提交变更,执行完之后可以查看.git/objects目录下存在一些二进制文件。说明已提交成功

第五步,执行git log, 也可以执行git show-branch

查看版本库的提交记录,由于量小,可以直接使用此命令,当量比较多时,建议执行git log > log.txt,将结果保存到log.txt中查看。

第六步,在Hello.txt文件中添加Hello Git的内容,重复第二步,第四步

文本内容的变更。

第七步,执行git diff HEAD HEAD~1

比较两次提交记录,可以查看最近一次有哪些变更。结果如下

diff --git a/Hello.txt b/Hello.txt
index e51ca0d..e69de29 100644
--- a/Hello.txt
+++ b/Hello.txt
@@ -1 +0,0 @@
-Hello Git
 No newline at end of file

  若未配置用户名和邮箱,需先配置。配置命令为git config user.name || user.email 

3、版本库目录结构

  创建完版本库之后,会相对应的创建.git文件夹,该文件夹下存放着所有的核心对象以及很重要的内容。理解各个文件,以及文件夹的作用有助于理解Git是如何运作的,但是不要去手动操作这些文件。下面详细介绍它们

3.1     文件

3.1.1   index

了解Index,首先需要理解索引的概念,以及版本库三种存储类型。

非裸版本库有三种存储类型,

第一种是工作目录,它是指存放于操作系统的文件系统中,此时在索引,底层数据库还未体现。

第二种是索引,此时Git会计算文件的内容,并计算SHA1值,创建blob对象,此时在索引中会保存文件的路径,底层数据库会保存文件的内容。

  第三种是底层数据库,它可以根据tree,blob对象完整的还原某个特定版本库的文件目录结构和文件内容。意味着假设在很早之前创建test文件夹,hello.txt,之后删除文件夹,删除hello.txt,或把hello.txt改的面目全非,也可以通过tree, blob对象还原当时的版本库。本质上它是Git对象与文件系统的一种映射。

  索引是工作目录最终保存在底层数据库的一个过渡阶段。它记录两个内容,一方面记录文件在文件系统中的目录结构,另外一方面记录文件内容对应的blob对象。可以理解Index就是一座桥梁。

  3.1.2  config

config文件保存版本库的配置信息,最常见的user.name,email。

操作config文件的方式有两种,

第一种方式是通过文本编辑器进行编辑,这种方式需要深刻理解每个配置项的含义,修改失败往往会导致配置文件不可用。

第二种方式是通过命令的方式,最常见的命令是git config, 其他命令也会反映在配置项上,例如git remote, git clone等。

查看config文件的方式也有两种,

第一种方式,通过编辑器直接打开查看,这种情况下需要综合全局的配置(user/.gitconfig)和本地版本库的配置(.git/config)

第二种方式,运行git config –-list命令。

在实际应用中,最常见的配置就是用户的信息,远程版本库的一些信息。

3.1.3   description

版本库的描述,没什么用。相当于Java在创建包时,创建的package-info.java,用于描述包的用途。Description文件是类似的,它用于描述版本库的用途。

3.1.4   Head

保存Head当前指向的Commit对象。它包含两个信息,第一个信息是分支名称,第二个信息是Commit对象的信息。

通常情况下,Head总是指向分支的最近一次提交。但是使用reset命令可以改变。在第十章节中会重点介绍reset命令。

3.2   object目录

它用于存放核心对象,blob,commit,tree,每种类型的对象都一一对应SHA1值,并以它的前两位作为目录名称,后126位作为文件的名称。

打开目录,通过人是无法识别出对象的类型,而且也无法查看文件的内容,都是二进制文件。

切记勿修改,移动,删除其中的内容。

3.3   logs目录

存放Git的日志,大部分是引用日志,即HEAD相关的日志。

可以通过git reflog, git log命令查看日志的内容

3.4   hooks目录

它存放钩子,熟悉JS的程序员知道,每个组件都会有很多的事件监听。钩子的作用是监听git的命令,类似于JS中的事件概念。

在实际中适用场景较少,文件夹下存放着一些钩子的示例,供学习和参考。

3.5   refs目录

ref目录用于保存引用类型,它有两个文件夹,heads目录和tags目录

heads目录用于保存HEAD对应的,各个分支的Commit对象,默认是最近一次的Commit对象。

Tags目录用于保存tag对应的Commit对象,初始情况下是空的,当创建tag对象之后,目录下会显示。

stash目录用于保存stash命令产生的一些内容。

至此,本篇内容结束,对应原著的第一章,第二章,第三章。

原文地址:https://www.cnblogs.com/rain144576/p/14707567.html