GIT教程 — 详解本地库的使用以及原理(二)

详解本地库的使用以及原理(二)





我们在上一个博客详解本地库的使用以及原理(一)当中了解到,如何创建一个本地库,然后查看本地库的修改,以及有本地库的各个

版本之间的切换. 还有本地库的版本记录的原理. 接下来这个博客,我们来了解本地库的底层实现原理>>> 工作区和版本库

什么是工作区和暂存区呢????

工作区就是你电脑当中所有可以看到的任意一个目录,可以这样理解这些目录是属于你工作的所以你可以看到他们.它们都要被你一

使用. GIT的版本库:在一个工作区里面的会有.git的隐藏目录,这里就已经不属于工作区了,这里是git的版本库.这里就是保存你

需要 往git推送的内容. Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动

建的 第一个分支master,以及指 向master的一个指针叫HEAD. 这里的HEAD指针我们已经见识过一点了,但是分支是非常重要的!

但是现 在我 们不关心! 我们关心的是暂存区....

GIT教程 — 详解本地库的使用以及原理(二)_第1张图片

上图其实就是我们从工作区将文件推送到git分支上的具体过程,现在我们应该理解到了为什么需要git add和git commit两步才能推

送成功了吧~ git add 将文件从工作区推送到暂存区.  git commit将所有的暂存区的内容推送到master. 因为我们创建Git版本库时,

Git自动为我们创建了唯一一个 master分支,所以,现在,git commit就是往master分支上提交更改。 你可以简单理解为,需要提交

文件修改通通放到暂存区,然后,一次性提交暂 存区的所有修改。 我们明白了这些,接下来理解更多git的操作会变简单。

所以当你修改一个文件之后,如果你没有git add. 你直接git commit是没有任何作用的. 记住你可以很多次git add 然后使用一次

git commit


git本地库的撤销修改



我们生活当中,不管是微信还是qq都有一个撤回的功能,原因就是我们发了一些不该发的东西,比如你跟你的基友发送一些不健康

的东西() 然后 你猛然发现发到女朋友的qq上面了,这时候趁女朋友没有发现赶紧撤回!!! 所以这个功能发明的就非常合情

合理. 那么GIT怎么会没有这些操作呢? 其实GIT也有类似的功能,就是防止你修改文件出错,然后非常后悔,再然后只需要一条

令就恢复如初. 接下来我们来认识一下:

$ git checkout -- file(这里是你的文件名)

GIT教程 — 详解本地库的使用以及原理(二)_第2张图片

这里我发现我的liang.txt里面出现了脏话,当然我可以里面回文件里面删掉,但是这里我要秀操作哈哈.我们可以看到这里一句

指令撤销了上一条内容 但是如果你不幸git add,把文件推送到暂存区了怎么办??  这里也不用担心~,看下面操作:

GIT教程 — 详解本地库的使用以及原理(二)_第3张图片


什么鬼...以前方法已经没有用了. 已经被添加到暂存区了怎么办.. 其实我们还有办法! 我可以使用指令把暂存区的文件回退

到工作区,然后再撤销内 容,接下来我来演示一下:

GIT教程 — 详解本地库的使用以及原理(二)_第4张图片

我们可以这里看到,使用git reset HEAD file 指令可以使得暂存区当中的内容回退到工作区!!! 来继续,这个时候你发现你

已经git commit 那么 这可怎么办! 上个博客当中的版本回退是干啥的?? 直接使用版本回退不就完了! 哪里来这么多话。

最后的最后,如果你把这个fuck you! 推送到远程库,推送到网上之后,那么你就自求多福吧.. 这个已经没有办法了......



git本地库的删除文件



我们刚刚了解到了,撤销功能. 现在我们继续学习,学习删除功能这时候有的人就开始疑惑了... 这删除功能有啥删的,这就是最简

单的rm 文件 就结束了. 不不不,当你单纯的删掉了一个文件,你使用git status指令时,他会告诉你版本库当中那个 文件被删

除了,所以你 还需要在版本库 当中删除掉这个文件,所以我演示一下~

GIT教程 — 详解本地库的使用以及原理(二)_第5张图片

这个时候liang.txt,就永远不会出现在你的版本库和你的工作区当中了. 当然如果你发现自己误删的时候,一定注意我们还可以

使用撤销功能.如果当你在库中删除文件并且git commit了,我们还可以解决.因为我们有时光机,可以回到过去~~  所以这里我

们可以看到git的强大之处.大概功能就这么多,还是希望大家好好努力.好好练习这个git的本地库的基本操作.  还有分支是非常

要的. 因为git其实最厉害的是与他人共享代码,大家一起合同协作,所以接下来分支和网上的远程库,以及和他人合作都是非

重要的.

你可能感兴趣的:(GIT基本操作)