【Git】从零开始使用git --- git 的基本使用

在这里插入图片描述

哪怕是野火焚烧,哪怕是冰霜覆盖,
依然是志向不改,依然是信念不衰。
--- 《悟空传》---

了解 Git

开发场景中,文档可能会经历若干版本的迭代。假如我们不进行版本管理,那么出现问题后想要回溯版本,就会
变得异常困难!

Git就是用来解决这个问题的:

  • git可以管理电脑上任意格式的文档。
  • git可以做到版本控制,可以记录文件内容变化,以便将来查阅特定版本修订情况的系统。

Git最初是由Linux开发者Linus用了仅仅两周时间纯C语言编写而成(两周时间包括测试),也就是目前为止最好用的分布式版本控制系统。(不得不说大佬就大佬,真滴厉害!)

git创建本地仓库

当我们想要将一个文件夹做为本地仓库时,可以使用:

git init

进行快速的初始化,当我们执行后会出现日志:在这里插入图片描述
此时,我们的本地仓库就建立好了!
当我们创建好本地仓库时,该来路径下会产生一个文件.git在这里插入图片描述
我们使用tree来看一下这个文件的文件结构:
在这里插入图片描述
后面我们会一一讲解。

本地仓库创建好之后,还需要进行一些配置。我们必须配置name email,那么如何进行配置呢?

git config user.name "jlx"
git config user.email "123123@qq.com"

我们可以通过git config -l 查看一下配置项:
在这里插入图片描述
想要删除配置项可以使用

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

接下来我们来看一个选项--global:

git config --global user.name "jlx"
git config --global user.email "123123@qq.com"

在一台主机下,我们可以配置多个本地仓库,每个仓库都会有对应的配置项。--global就是声明一个全局的配置项,所有的本地仓库都可以进行访问。对应的删除:

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

初步理解git结构

我们现在我们的本地仓库创建一个文件:
在这里插入图片描述
这样创建了一个文件之后,我们并没有真正的对readme进行了管理,这只是创建了一个文件!

注意:千万不能对.git文件进行手动修改!必须通过指令来进行管理,否则会破坏git仓库

所以readme这个区域也被称之为工作区。工作区就是我们进行编写代码,修改文件的地方:
在这里插入图片描述
只有我们使用git add filename之后,才会进入git仓库进行管理。使用add之后会将文件放入stage(暂存区)。当我们进行对文件进行修改之后,使用git add filename指令后,会将文件的新增/修改/删除信息放入暂存区(这里储存一个索引)。之后再通过git commit -m""将暂存区的文件放入版本库中。

在版本库中还存在一个对象库objects,当我们进行git add filename之后,修改的工作区内容会写入对象库的一个新的git对象中。
在这里插入图片描述
我们创建三个文件来看:
在这里插入图片描述
来看git log命令的效果:
在这里插入图片描述
此时就能看到历史commit的数据,这个提交id是哈希算法生成的一个大数,不会重复。

接下来我们再来了解一下git结构中的HEAD:
在这里插入图片描述
其指向了一个路径refs/heads/master。我们打印一下这个内容:
在这里插入图片描述
这里存放的就是最新一次commit提交的信息。这样的序列号都会有对应的对象:
在这里插入图片描述
这个序列号组成是:2位文件夹名称 + 对象序列号。我们来看这个对象到底是怎样的:
在这里插入图片描述

这里看到还有一个tree对象,我们看看这是什么:
在这里插入图片描述
这里是之前我们提交过的文件,都有对应的对象。

如果我们想要查看暂存区中是否出现了新内容,可以使用git statu查看是否工作区是否有被修改的文件。并且还可以通过git diff 可以查看工作区和仓库中的差异:
在这里插入图片描述

版本回退

接下来我们来了解git的核心功能:版本回退,本质是回退版本库的内容。
git存在三个部分:工作区,暂存区,版本库,都可以进行回退选项:

  1. --soft: 只回退版本库内容
  2. --mixed:对暂存区和版本库进行版本回退(默认选项
  3. --hard:对暂存区和版本库以及工作区都进行版本回退(慎用 ,会导致工作区新内容丢失,直接丢失好几天写的代码可就坏了)

那么如何进行选择回退到哪一个版本呢,我们可以打印出日志来看:
在这里插入图片描述
此时可以看到每次的commit信息了,所以写出完善的commit信息是非常重要的!!!然后就可以通过序列号进行回退了在这里插入图片描述
在这里插入图片描述

成功回退!当然如果后悔了,也可再次进行版本回退!只要我们的版本序列化存在就可以进行回退!

在这里插入图片描述
如果你不小心退出了,再次进入后发现之前的log信息不见了,不用担忧,可以通过git reflog进行查看,并进行版本选择。如果如果序列号真的没有了,那么也就没有办法进行版本回退了!!! 必须要多加注意哦!!!
版本库版本回退的本质是master指向的改变!所以速度很快!

撤销修改

前面的文章我们讲解了git的核心功能版本管理,以及如何做到版本回退。那么假如我们在工作区写了很久的代码,越写越抽象,实在写不下去了,想要恢复到上一个版本如何进行操作呢?

首先git有三个区域:工作区,暂存区,版本库。那么对应的就会有不同的情况:

  • 情况一:工作区进行了修改,但是还没有进行add,暂存区是没有新代码的
  • 情况二:工作区进行了修改,并进行了add,但还没有进行commit。这时暂存区是有新代码,但是版本库并没有更新
  • 情况三:工作区进行了修改,并进行了add,也进行了commit。三个部分都有新代码

我们先来看看情况一,这种情况应该怎么做:
假如你写的很少,干脆直接手动删除新代码吧。当然当你写的代码很多了,进行手动删除很难避免出现BUG,所以直接手动删除肯定是不可行的。那么如何进行操作呢?使用这个指令:

# 回退filename到最近add/commit的版本
git checkout -- filename

我们使用一下(注意中间的--
在这里插入图片描述

再来看情况二 ,工作区和暂存区都存在新代码,这时如何进行回退呢。这里可以使用版本回退git reset 指令。
使用--hard指令可以回退工作区和暂存区的代码,或者使用--mixed回退暂存区和版本库的版本进行回退之后进行工作区回退 。

最后来看情况三,工作区和暂存区以及工作区都存在新代码。这里可以直接使用--hard选项进行版本回退到上一个版本HEAD注意这样执行的前提是commit之后没有进行push。也就是说远程仓库没有被修改

删除版本库中的文件

当我们工作区的文件都添加到了版本库中后,如果我们想要删除版本库中对应的文件呢?
这时我们直接对工作区进行修改,然后add添加修改的内容。在进行commit提交即可,这样就完成了修改。

同样也有一个简化的指令:

git rm filename 

这个指令可以直接删除工作区和暂存区的文件!不在需要多步的操作了!

评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叫我龙翔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值