当前位置:   article > 正文

Git详解之本地仓库_创建git仓库是选择项目路径?

创建git仓库是选择项目路径?


在上一篇博客中已经要求大家到官网去下载Git,当你看这篇博文的时候你要打开Git Bash 。
在这里插入图片描述
你的界面要处于这种状态,接下来,我将手把手教你学Git。

附加:Git指令大全

在这里插入图片描述

1.创建版本库

什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。所以,创建一个版本库非常简单,首先,选择一个合适的地方,创建一个空目录。上图的红色箭头指向的路径就是我们打开Git Bash时所在的文件根目录。我们一般默认都在该目录下创建版本库。创建版本库之前,我们先来看看这个目录下的文件信息。
在这里插入图片描述
这个时候该目录下并没有版本库,接下来我们创建一个版本库。

在这里插入图片描述

第一个指令 mkidr 是创建一个文件夹
第二个指令 cd 切换到git文件夹中
第三个指令pwd显示当前所在的文件的路径
这个时候我们再去看看目录,看看有什么变化。
在这里插入图片描述
这个时候多了一个文件,文件名叫git。我们进去看看。
在这里插入图片描述
里面什么都没有,当然了,我们只是新建了一个文件夹,我们还没建版本库呢,别着急,这就开始。
在这里插入图片描述
输入git init指令,这个时候就建了一个Git的版本库了,这个版本库是隐藏的,所以我们会发现git目录中有一个隐藏的文件夹。
在这里插入图片描述
没错,这个 .git 文件就是我们要创建的版本库。你看是不是很简单呢!

1.1.文本的编辑和提交

版本库建好了以后,我们就得开始编辑文本了。文本的编辑是在工作区进行的。我们的任务就是新建一个china.txt 。文件内容是:中国,我爱您。
在这里插入图片描述
在这里插入图片描述
当我们已经输入完成后,我们要保存并且要退回上一级。
我们要先按 esc ,然后在按两下 zz 就可以达到我们的目的了。
这个时候我们可以看看我们刚才写的文件的内容 用 cat 指令。
在这里插入图片描述
这个时候我们不妨看看此时git的状态 用 git status 指令。
在这里插入图片描述
英文单词的意思自己去搜,提示词告诉你这个时候你得使用git add < file >指令,目的是将工作区的文件加载到暂存区中,我们先试试。
在这里插入图片描述
当我们添加完后出现了一个警告,这个你先放一边,等下我们再来看。
这个时候,我们在看看此时git的状态。
在这里插入图片描述
此时git的状态是已经被加载到暂存区了,接下来就是提交文件了,用
git commit -m “declaration” 指令。
在这里插入图片描述
出现了上述情况,这个时候你得要自报家门了,你得要告诉Git你是谁。
然后就执行上图的那两个指令。执行完那两个指令后,你再次提交一次。
这个时候就成功了。
这个时候你再查看下此时git的状态。
在这里插入图片描述
如果出现了上述情形,那么恭喜你,你已经成功编辑并且提交了一个文本,
诶,好像我们忘记了一个警告信息还没有解决,我们将工作区的文本加载到暂存区的时候不是有个警告吗,好了,现在我们来解决它。我们输入以下指令就可以了。
git config --global core.autocrlf false 关闭自动转换
现在,你就可以正常地进行文本的编辑和提交了
接下来,我们总结一下
在这里插入图片描述

2.时光机穿梭

我们已经成功地添加并提交了一个china.txt文件,现在,是时候继续工作了,于是,我们继续修改china.txt文件,改成如下内容:中国,我爱你
在这里插入图片描述
现在我们再用 git status指令看看此时git的状态。
在这里插入图片描述
git status命令可以让我们时刻掌握仓库当前的状态,上面的命令输出告诉我们,china.txt被修改过了,但还没有准备提交的修改。

虽然Git告诉我们china.txt被修改了,但如果能看看具体修改了什么内容,自然是很好的。比如我说我想看看我昨天到底改了什么地方,这个时候你可以用 git diff 指令去查看工作区与暂存区的区别。这个时候有些人可能要问了,为什么是查看工作区和暂存区的区别能看出我修改了什么地方?因为你在上一次提交的时候你是先将工作区的内容添加到暂存区的,然后再提交,那就说明暂存区里面的内容就是和上一个版本的内容是一样的。而你在工作区的修改都是基于上一次的版本上进行的。 好了,我们开始使用 git diff
指令吧!
在这里插入图片描述
结果就是上图所示。
我们现在看到了修改的地方了,心里踏实了,可以放心提交了。在提交之前,记得先添加到暂存区,再提交。
总结一下:
在这里插入图片描述

2.1.版本回退

像这样,你不断对文件进行修改,然后不断提交修改到版本库里,就好比玩RPG游戏时,每通过一关就会自动把游戏状态存盘,如果某一关没过去,你还可以选择读取前一关的状态。有些时候,在打Boss之前,你会手动存盘,以便万一打Boss失败了,可以从最近的地方重新开始。Git也是一样,每当你觉得文件修改到一定程度的时候,就可以“保存一个快照”,这个快照在Git中被称为commit。一旦你把文件改乱了,或者误删了文件,还可以从最近的一个commit恢复,然后继续工作,而不是把几个月的工作成果全部丢失。
那这个时候你就会问 ,我怎么知道我提交了多少次啊,没关系,有一个指令是可以提供提交日志的。 git log指令 试一试看看。
在这里插入图片描述
我们从这个日志上可以得到的信息有
1.我们提交的版本库的版本号
2.提交的日期
3.提交的作者的名字和邮箱(这里的我为了保护隐私,并没有写我的真实姓名和邮箱)
由于我每次在提交的时候那个declaration 都写的是s,因为这只是用来讲解
,方便而已,如果以后你在实际的应用开发中,你要写好每个版本的提示信息,这样有助于你找回到以前的版本。每提交一个新版本,实际上Git就会把它们自动串成一条时间线。如果使用可视化工具查看Git历史,就可以更清楚地看到提交历史的时间线。
既然可以版本回退,不如试一试?不知道你还记不记得我们上一个版本的内容是什么,如果不记得你可以回过头去看看。现在我们先来看此时文件中的内容是什么。
在这里插入图片描述
好,我们现在已经看到了最新版本的内容了,现在我们乘坐时光机会到上一个版本。秘诀就是 git reset --hard HEAD^ 指令。
在这里插入图片描述

现在我们再来看看china.txt文本文件里的内容是什么?
在这里插入图片描述
是不是变了。真是太神奇了。
现在我们在看看日志吧。
在这里插入图片描述
我们确实回到上一个版本了,但你有没有发现,最新的版本它不见了。就好比你坐时光机回到了19世纪,但是你回不去了,我只是想回到过去看看,重新体验一下过去的美好,但是我发现好像回不去了,别担心,Linus早就想到了。 试一试 git reflog指令吧。
在这里插入图片描述
仔细的你是不是发现了最新版本的版本号了,有了版本号,你自然就可以回到那个版本。
在这里插入图片描述
现在我们已经到最新的版本了,不信?我们看看文本文件的内容。
看看,是不是又回来了。
这里要给大家解释一下。Git的版本回退速度以及版本跳转速度非常快,因为Git在内部有个指向当前版本的HEAD指针,当你回退或跳转版本的时候,Git仅仅是把HEAD从指向版本。然后顺便把工作区的文件更新了。所以你让HEAD指向哪个版本号,你就把当前版本定位在哪。又因为暂存区的内容总是和版本挂钩的,而每次跳转到新的版本后,暂存区的内容自然也会更新,所以此时你用diff指令是没有差别提示的(工作区的内容和暂存区的内容和改版本库的内容是一模一样的)。
在这里插入图片描述
总结一下:
在这里插入图片描述

2.2.工作区和暂存区

工作区和暂存区是什么在上文中已经讲了,但是,我们在此再强调一遍,不要出现概念模糊不清的状态。
什么是工作区,就是你在电脑上能够直接看到的目录。看图
在这里插入图片描述
红色箭头所指向的文件就是工作区,千万不要搞混淆了,等到了后面,总 会有人会弄错的,所以我们在这强调一下。
那什么是暂存区又在哪呢?
暂存区在版本库里面 如图
在这里插入图片描述
index 或者是 stage 文件就是暂存区。
还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
我们再回顾一下 git addgit commit 指令。
git add 的作用就是把要提交的所有修改放到暂存区(Stage),然后,执行git commit就可以一次性把暂存区的所有修改提交到分支。
请大家要注意,Git它是记录版本与版本之间的不同,而不是记录版本的内容。
我们再来看看,你们觉得每一次提交之后,暂存区的内容会为空吗?还是说暂存区的内容先复制一份再提交上去?我们来讨论一下。
在这里插入图片描述
**一旦提交后,如果你又没有对工作区做任何修改,那么工作区就是“干净”的:**首先此时我们的工作区已经是干净的了,现在我们看看文件index里的内容是不是空的。
在这里插入图片描述
显然,它不是空的,由于编码方式的不同,我们看不懂,但没关系,我们通过这个现象可以看出来index提交了之后还是存有内容的。那我们还有没有其他的方式来证明呢,也有。不知道你们还记不记得 git diff 这个指令,这个指令就是用来查看工作区和暂存区的不同之处的。
在这里插入图片描述
现在暂存区的内容和工作区的内容是没有区别的,我们来个假说演绎 法。如果此时我们对工作区进行修改之后,再查看两者之间的不同,如果有区别,则证明暂存区提交后依旧存储内容,如果没有区别,则暂存区为空。
在这里插入图片描述
结果再次证明,但暂存区的内容提交的时候,暂存区的内容不会为空

2.3.修改

现在,假定你已经完全掌握了暂存区的概念。下面,我们要讨论的就是,为什么Git比其他版本控制系统设计得优秀,因为Git跟踪并管理的是修改,而非文件。

2.3.1.管理修改

你会问,什么是修改?比如你新增了一行,这就是一个修改,删除了一行,也是一个修改,更改了某些字符,也是一个修改,删了一些又加了一些,也是一个修改,甚至创建一个新文件,也算一个修改。
我们要知道所有的修改都是基于最新版本的,所有文件都修改了之后要添加到暂存区中,而不是一个一个提交,效率很低,可以一次性全部提交。
现在,你又理解了Git是如何跟踪修改的,每次修改,如果不用git add到暂存区,那就不会加入到commit中。

2.3.2.撤销修改

自然,你是不会犯错的。不过现在是凌晨两点,你正在赶一份工作报告,你在china.txt中添加了一行:
在这里插入图片描述
在你准备提交前,一杯咖啡起了作用,你猛然发现了stupid boss可能会让你丢掉这个月的奖金!

既然错误发现得很及时,就可以很容易地纠正它。你可以删掉最后一行,手动把文件恢复到上一个版本的状态。如果用git status查看一下:
在这里插入图片描述
git告诉我们此时文件还没有被添加到暂存区,只是在工作区进行了修改。
那很简单,git已经告诉你了如何操作。
1.使用 git restore < file >。(回到版本库的状态)
2.进入文件进行修改。(局部)
这两种方式要根据你的错误量来决定的
如果你只在某处有错误,选择第二种方式。
如果你增加的地方几乎都有问题,那你就选择第一种方式。
如果是china.txt已经添加到暂存区后,又作了修改。

在这里插入图片描述
这个时候git已经告诉你该怎么做了。总之,你在日常的操作的过程当中,一定要经常性地查看此时git的状态,然后根据git的提示词执行相应的操作。
现在,假设你不但改错了东西,还从暂存区提交到了版本库,怎么办呢?还记得版本回退一节吗?可以回退到上一个版本。
在这里插入图片描述
然后在这个版本下进行修改,就会完美地跳过那个不愉快的版本了。
在这里插入图片描述
这个红色箭头所指向的版本库的版本号就是过去式了。现在,你就可以长舒一口气了。毕竟你还没有把自己的本地版本库推送到远程。还记得Git是分布式版本控制系统吗?我们后面会讲到远程版本库,一旦你把stupid boss提交推送到远程版本库,你就真的惨了……

2.3.3.删除文件

删除文件在我们的日常开发过程当中是必不可少的。一般有两种方式。
1.一般情况下,你通常直接在文件管理器中把没用的文件删了。
2.用rm命令删了。
在这里插入图片描述
git给我们的提示是china.txt已经被删掉了。
现在你有两种方式解决问题。
1.你是不小心删掉的,使用git提示的指令把它给复原。
2.确实你是要想删掉这个文件,也是根据提示来。
在这里插入图片描述
现在执行完这个指令之后,你就把版本库里的文件也给删了。
现在再看看git的状态。
在这里插入图片描述
根据提示,你在提交就可以了。
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/589328
推荐阅读
相关标签
  

闽ICP备14008679号