Git 食用方法

1.简介

Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

相信很多同学抄作业写作业的时候多多少少都见过​​git clone xxx​​​这样的命令,这也算与​​Git​​结识的一个奇怪方式?

值得一提的是,Git 是由Linux内核大爹Linus开发的。更多的简介的就不多提了,感兴趣可以去看更多大佬的科普文章。

2.Git 安装

I.Windows平台安装

首先到官网下载Git的安装包:https://gitforwindows.org/

如果官网慢,可以用国内的镜像:https://npm.taobao.org/mirrors/git-for-windows/

下载完成后安装,如果无特殊需求,可以一路无脑点到底。

II.Debian系安装

一般来说,应该系统都会自带Git。但如果没有的话就自己安装一下:

$ sudo apt-get install libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev
$ sudo apt-get install git
$ git --version

III.RedHat系安装

$ sudo yum install -y libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev
$ sudo yum install -y git
$ git --version

3.Git 基础配置

在安装好Git后,你并不能直接使用他(如果只要​​clone​​的话除外),而是需要进行一些基础配置。

Git 的配置可以使用​​git config​​命令进行编辑和查看:

如果要查看所有配置信息:​​git config --list​

如果要查看单个变量信息:​​git config var_name​

​Git​​​的配置文件储存在个人用户目录下的​​.gitconfig​​文件中(Windows和Linux均为该目录)

以下介绍一些基本的配置:

I.用户信息

用户信息主要指用户名和电邮。为什么要配置这个东西呢?因为本地仓库与远程仓库绑定后,在Git版本历史记录中是要记录每个更改是由哪个用户完成的,因此需要这个标识来区分不同用户的操作记录。

用户信息分为两种:针对全局的用户信息和针对项目的用户信息。在某个项目中,如果没有配置针对该项目的用户信息,则默认使用全局的配置。

  • 配置全局个人用户名和电子邮件地址:
$ git config --global user.name "your_name"
$ git config --global user.email your_email@server
  • 针对项目配置个人用户名和电子邮件地址,只需要去掉​​--global​​即可:
# 首先确保当前路径位于待配置的项目下
$ git config user.name "your_name"
$ git config user.email your_email@server

II.默认文本编辑器

Windows就基本不用配置了,Linux需要注意,默认的文本编辑器为​​vi​​​和​​vim​​,如果需要修改(比如修改为Emacs):

$ git config --global core.editor emacs

III.差异分析器

同样,一般不会修改这个配置。但如果要改用 vimdiff 的话(例子):

$ git config --global merge.tool vimdiff

4.Git的基本结构

画一张图来解释Git的基本结构:

Git学习笔记-1.Git基础知识_git

  • 工作区: 工程代码的主要存放位置,也是进行开发的位置
  • 暂存区: 英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
  • 版本库: 工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。

这张图的理解非常重要,它是​​Git​​操作的基础。图中有两个大箭头和标签:

  • ​add​​​:即对应​​git add​​操作,他将工作区的代码加入暂存区。暂存区的​​Index​​是一个索引文件。存放的是暂存区的整个目录树的信息,并且为目录树中的每个文件都保存了时间戳和长度。
    当​​git add​​ 将某个文件添加到暂存区的时候,​​index​​文件中添加了这个文件的基本信息。
    当我们修改了工作区的某个文件,这会导致该文件的时间戳发生变化,而​​index​​里面存放的仍然是旧的信息,如果此时当我们执行​​git status​​命令来检查版本库的状况,会有下列判断发生:
  • ​git status​​​就会用​​config.js​​​的时间戳和长度和​​index​​​文件里面保存的​​config.js​​的时间戳和长度进行比较。
  • 如果相同,则认为没有改变,此时会简单的将最新的​​config.js​​​的时间戳信息更新到​​index​​文件中
  • 如果发现不同。​​git status​​​会继续用​​config.js​​​的文件现在的内容和旧版本的​​config.js​​​(保存在​​.git/objects​​​中)的内容进行比较,提示内容发生改变。但是并不更新​​index​​​文件中的​​config.js​​的时间戳信息。
  • ​commit​​​:即对应​​git commit​​操作,他将暂存区的修改提交到代码仓库。​​HEAD​​标签指向当前正在开发的某个分支,所有的分支构成了整个仓库。