Git简介
在学习每一项技术或者某一款软件的时候,都需要对其进行简单的了解,这是基本的尊重。所以,下面就给出了百度百科对Git的解释。
Git(读音为/gɪt/。)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
由上可知,Git是一款版本控制软件。那么什么是版本控制呢?就像平时工作中使用的SVN一样。在我待过的公司,基本上都使用的是SVN这款版本控制软件。但是,作为一名有修养的程序员,就要有一颗持续学习的心。更何况,现在大部分公司都在使用Git。
既然要学习Git,就要了解一下Git的特点:
- 最优的存储能力
- 非凡的性能
- 开源的
- 很容易做备份
- 支持离线操作
- 很容易定制工作流程
Git的安装
现在网上可以找到很多安装教程,所以安装Git,还是很方便的。我呢,就参考了Git官网给出的安装教程,感觉Git官网还是挺人性化的,提供了多种语言。像我这种英语渣渣也可以使用中文进行一些骚操作了: https://git-scm.com/book/zh/v2/起步-安装-Git
上面这个链接就是Git的中文安装教程。包括Linux、Mac、Windows哦。
创建第一个仓库
Git安装完成,如果是windows的用户,会有Git Bash这个命令行工具。打开它,就像操作Linux一样。我这里使用的是Linux系统
首先看下Git的版本
git --version
这是从官网下载的最新版。接着就可以创建一个Git仓库了。将项目纳入Git管理有两种方式。
一、把已有的项目代码纳入Git管理
比如本地有写好的代码。就直接使用下面的命令。
cd 项目代码所在的文件夹
git init
二、如果项目是从零开始,那么就可以在创建新项目的时候,让Git进行管理。
cd 某个文件夹
git init project_name #会在当前路径下创建和项目名称同名的文件夹
项目创建完了,接着就需要配置Git的作用域了。
Git的三个作用域:
git config --local 只对某个仓库有效
git config --global 对当前用户所有仓库有效
git config --system 对系统所有登录用户有效
就拿自己创建的项目为例,将它配置成local作用域。记得,邮箱一定要写自己可以登录的邮箱。
git config --global user.name "xxxxx"
git config --global user.email xxxxx@example.com
配置好之后,就可以查看当前三个作用域具体配置了哪些信息。对应的命令是:
git config --list --local
git config --list --global
git config --list --system
git config --list 默认显示所有作用域下的东西
可以看到,配置的用户名和邮箱,都显示出来了,因为刚安装好Git的缘故,所以其他的配置都没有。
这三个作用域的优先级:local>global>system
工作区和暂存区
在Git有工作区和暂存区的概念。
工作区:这就是本地工作目录。在电脑中能实际看得到的目录。
暂存区:一般存放在.git目录下。可以类比java中的缓冲区。
实际操作理解工作区和暂存区
就拿一个简单的html页面为例。
首先,在根目录建立index.html文件,然后建立css文件夹,存放index.css文件。最后在建立一个js文件,存放index.js文件。这样使得编码更加规范。
写一些简单的代码,重点在git的使用,而不在前端页面上。
可以看到,新增了一个index.html文件和css文件夹和js文件夹。那么,依次将文件放入暂存区,然后提交。
git add . 或者git add 文件名 #提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件。
git add -u #将工作空间被修改和被删除的文件添加到暂存区(不包含没有纳入git管理的新增文件)
git add -A #提交所有变化(新建、删除、修改)
首先将index.html添加到暂存区,然后看状态。
git status #查看当前git的状况
也许有的人也是使用的Linux系统,查看状态的时候,没有什么颜色的区分。对于一个成熟的git玩家,有没有颜色高亮是无关紧要的,但是对于一个刚入门的小白。肯定还是需要高亮提示的。
git config --global color.status auto
git config --global color.diff auto
git config --global color.branch auto
git config --global color.interactive auto
上面这些就是使git打印彩色日志的命令。可以看出来,就是配置了几个对所有仓库有效的作用域。
然后查看一下此时的状态。
可以看到,颜色变成了高亮。而index.html文件的颜色和css、js文件不一样。绿色的index.html文件,说明已经将此文件加入了暂存区,而其余的文件还在本地。接着,就是将暂存区的文件提交到本地仓库。
git commit -m 'Add commit readme' #提交,-m指提交的备注
git commit -am 'Add commit readme' #加的-a参数可以将所有已跟踪文件中的执行修改或删除操作的文件都提交到本地仓库,即使它们没有经过git add添加到暂存区
使用上面的命令,就可以把暂存区的文件提交到本地仓库了。这里使用三次提交来区分,会生成三个commit。以便后续操作。
当暂存区所有文件都提交,生成commit之后,就可以通过查看git的日志,来查看提交信息了。
git log #查看git的日志
可以看到,有多少个commit,就显示多少条信息。
第一行,显示的是commit的id,这个是惟一的,是通过hash值来判断的。
第二行显示的就是作者的名称和邮箱。
第三行显示的是日期。
最后一行,显示的就是提交时的备注信息。也就是Message。
此时的暂存区就是干净的。
文件重命名的方式
如果说,你新建或更新了某个文件,并且提交到了本地仓库。但是需要对它进行重命名,此时应该怎么办呢?这里提供了两种方式。
一、直接在工作区中进行修改,然后删除暂存区中的文件,再提交。
假设新建一个readme文件,需要更改为readme.md文件。可以使用以下命令
mv readme readme.md #将readme文件重命名为readme.md
git add readme.md #将重命名的文件添加进暂存区
git rm readme #删除暂存区中的readme文件
可以看到,git也非常智能,当修改了文件的名字,git也知道要对暂存区的文件进行删除。还给出了提示。
二、直接使用git命令。
git mv readme readme.md #变更文件名
只需要这一条命令就可以代替上面的三条命令,明显还是这个方便一些。
查看版本历史的演变
git log #查看当前分支的历史
这个命令就是查看当前分支的历史,上面也演示过。
git log --all #查看所有分支的历史
这个命令需要两个分支才能看出效果,所以,这里引出了新的知识点,怎么创建新分支。
git checkout -b v1.0 以前的版本id #基于以前的版本创建新的分支
git branch -v #查看本地分支信息
git branch -av #查看所有分支信息(本地和远程)
可以看到,基于以前的commit创建了一个新的分支,并且自动切换到了v1.0分支。然后在v1.0新增一个test文件,然后再看所有分支历史。
因为使用的是Linux系统,所以在查看日志的时候,不显示分支名,如果使用windows系统的GitBush,就可以迅速区分。
只能通过commit来判断了,在v1.0分支,创建了一个a.txt文件,并提交,所以正如图片看到的一样。
git log --all --graph #查看图形化的 log 日志
这个图形化界面的分支版本日志,还是能直观的看出分支数。
最后,还有简洁版的显示。
这个看着更加方便,当版本历史多的时候,就可以使用这个命令。至于版本历史的命令还有很多,基本上都是组合命令,还需慢慢研究。
git log --oneline #查看单行的简洁历史。
git log --oneline -n4 #查看最近四条简洁历史
git log --oneline --all -n4 --graph #查看所有分支最近 4 条单行的图形化历史
git help --web log #跳转到git log 的帮助文档网页
通过图形化界面查看版本历史
这里所谓的图形化界面,是git提供的。如果是windows系统,则可以直接使用如下命令
gitk
gitk --all
上面就是gitk图形化界面展示的效果,至于Linux上怎么安装使用,这个还需要查询相关资料。
补充
因为刚开始的操作,是直接使用Linux安装的git。所以,版本比较老。在日志查看的时候,不方便区分。所以,就需要进行源码的编译安装。至于安装教程,如下链接:
下载链接:https://github.com/git/git/releases
安装链接:https://jingyan.baidu.com/album/e9fb46e16698687521f766ec.html?picindex=1
安装完成之后,再看git版本,就会发生变化,然后,再试着查看一下版本的历史日志,就会出现分支的显示了。
让过去过去,让未来到来