今天小铭酱带大家探索一下git的奥秘!

1.初步探索

首先我在一个空的文件夹新建了一个名叫hello.html文件,文件内容只有一句话“hello git”。我们先引入git,看看git能为我们它能干什么,嘻嘻~

1) git init

初始化后,在当前目录下会出现一个名为 .git 的目录,所有 Git 需要的数据和资源都存放在这个目录中。就这么简单,我们已经有一个代码仓库了。

2) git add

有了仓库,那第二部我们要让git知道哪些文件需要被管理或跟踪的。输入"git add ." (这里.是代表所有文件,也可以输具体文件名) 让当前所有文件都被git跟踪到。

3) git commit

add后我们需要第一次commit,这样git才会帮我们创建一个主分支,什么是分支后面会讲。我们先输入"git commit -m "init commit" 这里-m必须加,表示这次提交的描述,内容我们随意输,主要是给自己做标记用的。

4) git log

试试输入git log,我们发现我们的提交已经被记录下来了。就这样一个最基本简单的流程已经走完了。哎呀,妈呀,这git到底有啥用?我咋完全不懂呢?别急,我们看看神奇的事情开始发生了。

 

 

2.进入git的世界

1) git checkout

这时粗心的我不小心把hello文件中的代码给误删了,而且我又忘了代码写些什么来着~~~咋办尼?

嘿嘿,这时git闪亮登场。试试输入"git checkout hello.html"看看会怎样。

咦!我们发现那句代码神奇的又回来了。难道这个命令是可以把我现在的代码还原到上次提交的吗?好像没那么简单,不过我们也暂时这样理解吧,稍后会详细介绍。这下我会玩了,我可以随便修改代码,如果错了,直接checkout不就行了吗,哈哈。

2) git status

这时我们继续编辑代码,当代码敲得差不多时,咦~ 我到底改了什么呢?输入"git status",我们看到以下信息,它告诉我们hello.html文件被修改了。

大家肯定跟我一样,那到底这个文件修改了哪些内容呢?不急,这"git status"只是列了个大概,告诉你有哪些文件被修改过,但如果想知道具体内容,就要借助git diff命令。

3)git diff

输入"git diff"这里显示了详细的修改。

ok,查看了修改内容,觉得没问题,那就提交吧。输入“git add ."  等等,我好像发现了个问题。为什么git要先add然后再commit呢?干嘛不直接commit要多一部这么麻烦呢?这里就涉及git的设计了。

3.git 你到底是啥构造?

1)理解git构造

首先我们先来理解以下git的概念

  • 工作区:就是你在电脑看到的目录
  • 暂存区:英文叫stage或index
  • 版本库:工作区隐藏目录.git
  • 分支:一连串提交组成了一个分支

 

这里借用w3c的图给大家看,当我们编辑完代码,然后准备提交。当我们add时候,其实是把我们工作区的代码放到了暂存区了。然后当我们commit时候,才是真的写到分支上了。分支是什么呢?分支就相当于把我们每一次提交串连成一条时间轴。而这条时间轴就相当于一个分支,哦~ 这样大概理解了。至于为什么要搞一个暂存区,是因为中间有了缓冲,使得管理代码更具有灵活性了。

2)重温git status 和 git diff 和 git checkout

现在,我们新建一个html文件,取名heihei。输入"git add heihei.html"让git跟踪这个文件。同时这时我们修改一下hello.html文件(注意,hello文件没有现在是没执行add)。这时试试status一下会怎样?

这下我好像看懂了,哈哈。那再试试diff命令?

Yoshi(日文)原来这是默认查看工作区和暂存区之间的差异变化,也就是修改之后还没暂存起来的变化内容。那我要看暂存区和上次提交的详细变化该怎么看呢?输入"git diff --staged"

Yoshi 原来是这样子 哈哈 好简单是吧~ 就是这么简单,不过这只是最基本的操作,我们再看看checkout命令,这时候先忽略掉heihei文件,把hello文件add一下,再给hello文件添加一句代码。

现在工作区,暂存区,分支上的代码分别是这样的