Git学习笔记(一)

导航小助手

一、Git初识

1.1 场景

1.2 版本控制器

1.3 注意事项

二、Git安装

2.1 Linux-centos

2.2 Linux-ubuntu

三、Git基本操作

3.1 创建Git本地仓库

3.2 配置Git本地仓库

3.3 认识工作区、暂存区、版本库

3.3.1 添加文件—场景一

3.3.2 添加文件—场景二

3.4 修改文件

3.5 版本回退

3.6 撤销修改

场景一:对于工作区的代码,还没有add

场景二:已经add,但没有commit

场景三:已经add,并且也commit了

3.7 删除文件


一、Git初识

1.1 场景

现在老板需要小李产出一份 设计文档,于是 小李 就屁颠屁颠的去做文档了~

当小李做完了之后,老板不是很满意,于是就只能去 进行第2次修改;之后修改之后,老板说还不如第一次文档,继续再次修改吧;......;最终修改了 n次,就把设计文档发给了老板;老板却又说,看了这么多的文档,还是觉得第一次设计出来的是最符合预期的;此时,......

实际上,小李从开头到现在,只是对着一份文档进行修改的;所以说,此时文档保留的内容 只是第 n 次修改后的内容,并不可以直接拿出第1次的设计文档~

有了这一次的教训,下一次小李在做设计文档的时候,就开始对做好的文档 进行复制粘贴,做一个副本了:

Git学习笔记(一)_第1张图片

当然,在n比较小的时候,这种办法还是比较好的~

但是,当n比较大的时候,想要拿到其中的某一份文档 是可以拿的出来的,但是 想要知道在这么多文档中需要拿出一份 新增了A功能的文档,估计这就不可以了~

即:随着版本的不断增多,维护好版本还是有挑战的:如 各自版本所修改的内容就不一定记得了~

1.2 版本控制器

为了解决这个问题,大佬们就提出了 版本控制器!!!

通俗的解释:需要记录每次的修改内容,以及版本迭代的 一个管理系统~

版本控制器 有很多种,其中 Git 就是其中的最主流的一个,可以控制电脑上的所有格式的文件:.doc、.docx、png、......

对于 开发人员 来说,使用Git可以帮助管理项目中的源代码文件~

1.3 注意事项

版本控制器 只能追踪到 文本文件 的改动,如:txt文件、程序代码 等等;它可以告诉每一次的变化,如 第2行增加了 "git"单词~

但是,对于 二进制文件,如:图片,视频等等;只能知道 从 100kb 变成了 200kb,但是其中具体改了啥,并不能很清楚的知道~

Git学习笔记(一)_第2张图片

二、Git安装

2.1 Linux-centos

在 Linux环境下 安装 Git 其实非常简单,只需要一行命令即可解决~

首先,我们先来查看一下 Linux服务器 下面有没有安装 Git,可以使用下面的命令 查看安装过的Git版本:

git --version

此时如果当前安装好了的话,就会显示出安装过的版本Git学习笔记(一)_第3张图片

可以看到,其实我是已经安装好了的~

当然,现在可以删除安装过的Git:

sudo yum remove git -y

之后查看 Git 的版本号,就会发现,已经查看不了了:

此时,就可以安装 Git 了:

sudo yum install git -y

在安装好了之后,就可以继续查看刚刚所安装的版本了:Git学习笔记(一)_第4张图片

2.2 Linux-ubuntu

和 上面的一样,可以查看如果下载后的版本:

可以删除如果已经下载好的Git:

也可以现在继续下载Git:

 

三、Git基本操作

3.1 创建Git本地仓库

Git 是一个 版本控制器,如果想要对每一次修改的记录、版本迭代的一些详细内容,就可以使用 Git 去追踪管理它们~

而如果想要追踪管理,这些文件就不可以随便乱放,只有在 Git本地仓库下面 的文件才可以被 Git 所追踪管理的~

我们可以重新建立一个 gitcode目录,打算在这里面做一些Git的基本操作;当我们进入这个目录之后,就可以使用下面的命令来创建一个本地仓库:

git init

可以看见,它自动创建了一个 .git隐藏文件(我们不应该去修改 .git隐藏文件里面的任何内容!)  

3.2 配置Git本地仓库

在创建 Git本地仓库 成功之后,我们还需要为本地仓库 新增两个配置项:name、email(是必须要配置的)~

配置命令为:

git config [--global] user.name "用户的名称"
git config [--global] user.email "邮箱的格式"

查看所配置的命令为:

git config -l

Git学习笔记(一)_第5张图片

删除配置的命令为:

git config --unset user.name
git config --unset user.email

Git学习笔记(一)_第6张图片

注意:

其中,--global 是一个可选项,它的作用是:在一台服务器上,可以创建不止一个本地仓库;如果加了这个可选项,就表示 在当前服务器下的 所有的Git本地仓库 都生效~Git学习笔记(一)_第7张图片

 当然,如果加了 --global可选项,那么删除该配置项的时候,不可以直接使用上面的命令;必须加上--global可选项:

git config --global --unset user.name
git config --global --unset user.email

Git学习笔记(一)_第8张图片

3.3 认识工作区、暂存区、版本库

Git是一个 版本控制器,使用Git就可以对电脑上所有格式的文件进行管理,需要将所要管理的文件放到Git仓库中进行维护~

如:此时 直接在 Git仓库 创建一个 ReadMe文件:Git学习笔记(一)_第9张图片

当然,在目前情况下,Git 还是不能管理 ReadMe文件~

工作区:电脑上、服务器上 所要写的代码、文件的目录

暂存区:英文叫做stage或者index,又称之为"索引",一般存在于 .git目录 里面的 index文件里面

版本库:又称之为"仓库",即 "工作区"中的隐藏文件".git"

ReadMe文件 还不能够被Git管理,是否把该文件放进 .git文件 里面,就可以进行管理了呢?答案肯定是不可以的,该隐藏文件是不可以进行手动修改的!!!

所以,就把ReadMe文件放在了 gitcode目录下,即:"工作区"里面~

Git学习笔记(一)_第10张图片

3.3.1 添加文件—场景一

第一步,使用 git add 命令 将所要提交的文件先添加到暂存区:

  • 添加一个或多个文件 到暂存区
    git add 文件名1 [文件名2][文件名3]......
  • 添加目录 到暂存区
    git add 目录名
  • 添加当前目录下的所有内容的修改 添加到暂存区
    git add .

第二步,使用 git commit 命令 将暂存区的内容添加到本地仓库:

  • 提交 暂存区的全部内容 到本地仓库中
    git commit -m "message"
    	注意:message 是 本次所要提交的细节,给自己看的不能省略
  • 提交 暂存区的指定文件 到本地仓库中
    git commit 文件名1 [文件名2][文件名3]... -m "message"
    	注意:message 是 本次所要提交的细节,给自己看的不能省略

Git学习笔记(一)_第11张图片

Git学习笔记(一)_第12张图片

此时,我们可以使用下面的命令,来查看时间从近到远的提交记录:

git log

 Git学习笔记(一)_第13张图片

当然,我们可以加一个选项参数,使日志看起来更加的可观:

git log --pretty=oneline

 

3.3.2 添加文件—场景二

首先创建一个 file4文件,接着add  file4一下;接着 继续创建一个 file5文件,此时 想要提交一次(希望想要把 file4file5文件 都提交到本地仓库),结果会发现只有一个文件提交上去了~

实际上,add只是把 file4文件 放到了暂存区中,所以 提交的时候只会提交 file4一个文件,而并不会把两个文件一起提交~Git学习笔记(一)_第14张图片

3.4 修改文件

对于工作区的一些操作,如:新增、删除、修改文件等等,都算是修改的操作~

结论:Git 追踪管理的是修改,而不是一整个文件~

比如说,现在对 ReadMe文件 新增一行内容:Git学习笔记(一)_第15张图片

之后,就可以使用下面的命令 来查看当前仓库的状态:

git status

Git学习笔记(一)_第16张图片

当然,我们可以使用下面的命令来 查看暂存区和工作区之间的差异:

git diff [文件名]

Git学习笔记(一)_第17张图片

之后,就可以使用  git add  操作、 git commit 操作 即可~

3.5 版本回退

版本回退 功能 是 Git 最重要的能力之一,作为版本控制器,Git可以管理文件的历史版本~

执行命令:

git reset [--soft | --mixed | --hard] [HEAD]

git reset 本质上是回退 版本库 中的内容,工作区或暂存区是否会退 则需要根据后面的可选项决定~

默认的选项是:--mixed 选项,使用时可以不添加该参数~

当然,还可以回退到当前版本(将工作区、暂存区里面的内容 回退到 和版本库保持一致的内容(即:版本库内容=工作区、暂存区内容)这个在下面介绍)~

注意:

慎用的是 --head选项,一不小心回退了之后,那么就找不到刚刚写的了

比如说,对于 ReadMe文件,是有两个版本的:版本1 是只有 hello git内容,版本2 是在 版本1 的基础上增加了 hello world内容

工作区 暂存区 版本库
版本2 回退 git world git world git world
--soft git world git world git
--mixed:默认选项 git world git git
--hard:慎用 git git git

以使用 --hard选项为例:

Git学习笔记(一)_第18张图片

 此时,如果再次打印日志信息,就会发现 后面的提交的日志都不见了,只有一份日志信息:

如果说,现在又突然后悔了,又突然想要回到原先版本2的内容,有没有可以回去的办法?

当然,因为一开始我们知道了 版本2 的 commit id(一开始打印出来的日志里面有):Git学习笔记(一)_第19张图片

如果说,服务器突然关闭了,或者是突然清屏之类的,使得找不到对应的 commit id,怎么办?

我们可以使用下面的命令来查看 每一次的提交命令:

git reflog

Git学习笔记(一)_第20张图片

Git学习笔记(一)_第21张图片


版本回退速度迅速的示意图:

Git学习笔记(一)_第22张图片

3.6 撤销修改

如果在工作区中已经写了很长时间的代码,但是 越写越觉得写的代码很垃圾,想恢复到上一个提交的代码,就需要进行撤销修改操作~

场景一:对于工作区的代码,还没有add

这种情况,想要撤销的代码 存在于 工作区~

首先,我们先对 ReadMe文件 增加一行内容:

Git学习笔记(一)_第23张图片

当然,我们可以在这种情况下 直接手动编辑 ReadMe文件,以删除新增的内容;但是 也会有这样一种可能性,这代码已经开发三四天了,已经写了很多很多行代码了,此时 手动删除就不是很方便了,也不能保证删除的内容是不是之前写的,可能改着改着就会出现 Bug 了(不推荐,容易出错)......

所以,Git 就提供了这样一个命令,直接完成对工作区的回退,回退到上一个版本:

git checkout -- 文件名

 Git学习笔记(一)_第24张图片

场景二:已经add,但没有commit

这种情况,想要撤销的代码 存在于 工作区、暂存区~

同样的,继续对 ReadMe文件 进行一次修改,以用来演示:Git学习笔记(一)_第25张图片

 对于这种情况,我们可以使用下面的命令:

git reset [--mixed | --hard] [HEAD]
    注意:该命令将工作区、暂存区里面的内容 回退到 和版本库保持一致的内容(即:版本库内容=工作区、暂存区内容)

使用 --hard选项 时,工作区、暂存区、版本库 同时回退,此时 工作区、暂存区里面的代码就撤销了,符合预期~

使用 --mixed选项 时,暂存区、版本库 同时回退,此时只剩下工作区的代码需要回退了,就变成了和场景一的情况了~


Git学习笔记(一)_第26张图片

 Git学习笔记(一)_第27张图片

场景三:已经add,并且也commit了

这种情况,想要撤销的代码 存在于 工作区、暂存区、版本库~

咳咳,前提条件:commit 之后没有 push,没有推送到远程仓库,撤销的目的是不会影响远程仓库的代码~

我们同样可以使用 git reset命令,来对代码进行回退:

git reset --hard HEAD^

 同样,准备工作需要做好:

Git学习笔记(一)_第28张图片

Git学习笔记(一)_第29张图片


总结:

Git学习笔记(一)_第30张图片

3.7 删除文件

删除文件,不仅仅是需要将 工作区 中的内容删除,而且还同时要把 暂存区、版本库 里面的内容删除~

所以,我们不可以 仅仅使用 rm命令 删除(仅仅删除 工作区 内容)~

我们可以使用两种方式 来删除文件:

第一种方式(咳咳,这种方式没试出来):

  • rm命令 文件名

  • git add 文件名(将工作区中的变动 提交到暂存区)

  • git commit -m "message" 进行提交命令    

第二种方式(自己比较推荐这种方式):

  • git rm 文件名

  • git commit -m "message"

咳咳,原来有的 file3file4file5文件 试没了,不必在意这些细节......

Git学习笔记(一)_第31张图片 

你可能感兴趣的:(Git)