github学习之旅(四)—— 工作区、暂存区、仓库区

摘要:
首先,转到阮一峰的github个人主页,找到仓库并进入仓库,单击箭头所示的区域复制仓库的url,然后在我们的本地区域执行gitclone命令,如下所示。我们可以再次修改工作区,然后再次将其放入暂存区。此时,我们不会将本地仓库与远程github仓库相关联。有一篇文章太长了,我读不下去。我将单独讨论。

一、Git 工作流程

Git 是一个开源的分布式版本控制系统,自然就是为了记录我们的文件变更,它的工作流程如下,我们在本地(workspace)的更改,可以提交到暂存区(Index),提交到暂存区之后,我们可以继续在本地做变更,再提交到暂存区,最后等我们觉得合适了,再一次性提交到版本库(Repository),这时也就被Git跟踪起来了,也就是一个个的历史档案,每一个历史档案都会有一个独一无二的编码,将来我们可以查看每次历史档案的变更的详细内容。

github学习之旅(四)—— 工作区、暂存区、仓库区第1张

接下来,说明一些关于这3个状态的一些详细命令。

二、新建代码仓库

代码仓库,也就是文件夹,但它区别于普通的文件夹,也就是会被Git跟踪,我们有如下俩种方式新建代码仓库。

1、本地新建

// 在当前目录新建一个Git代码库
git init

在我的桌面有个git-learning文件夹,该文件夹下面有一个子文件夹demo。如下。

github学习之旅(四)—— 工作区、暂存区、仓库区第2张

 执行以下命令,并且出现如下信息,即可完成一次本地代码库的创建。

github学习之旅(四)—— 工作区、暂存区、仓库区第3张

 2、远程克隆

第二种方式,就是克隆啦,也就是把远程仓库(github)给拉取到本地。比如我想把阮一峰老师的es6tutorial仓库给克隆下来。

首先进入阮一峰老师的github个人主页,找到该仓库并进入该仓库,并点击箭头所指区域,即可复制该仓库的url,如下

github学习之旅(四)—— 工作区、暂存区、仓库区第4张

再在我们的本地执行git clone命令,即可。

github学习之旅(四)—— 工作区、暂存区、仓库区第5张

三、把修改的文件提交到暂存区

如下图所示,我们进入demo文件夹,然后新建了abc.txt文本文件,并写入内容hello。然后执行了一次 git status 命令,这个命令是检查当前文件夹下的文件状态的,可以看到,abc.txt颜色为红色,并且出现untracked files 字眼,也就是说,abc.txt文件暂时没有被跟踪。

github学习之旅(四)—— 工作区、暂存区、仓库区第6张

 这时我们可以通过git add 命令把文件放进暂存区,这个命令有俩种用法,如下:

// 把所有未跟踪的文件放进暂存区
git add .

// 把指定的文件放进暂存区
git add abc.txt

 github学习之旅(四)—— 工作区、暂存区、仓库区第7张

 可以看到,我们执行了 add 命令之后,再次 git status,abc.txt文件名变成了绿色,说明,已被暂存。

 我们,可以再次对工作区修改,然后再次丢进暂存区。如下。

github学习之旅(四)—— 工作区、暂存区、仓库区第8张

至此,我们在demo工作区,新建了一个abc.txt文件,丢进暂存区,然后再次新建一个def.txt文件,再次丢进暂存区,所以,我们的暂存区,有俩个已被跟踪的文件了。

四、把暂存区的文件放进本地版本库

 要想真正的被版本库所记录,并最终形成一个一个带有编号的版本,是需要放进本地版本库的,暂存区,我觉得只是一个用来控制提交颗粒度的区域,就是可以分批次的放进暂存区,然后一次性放进版本库。此时用到的命令是commit。语法如下:

git commit -m 此次提交的说明

github学习之旅(四)—— 工作区、暂存区、仓库区第9张

 上面图片所示,已经通过commit命令提交到本地版本库了,再次执行git status命令,可以看到提示信息:没有文件可以提交,工作区域是干净的。

说明:这里有一个小技巧,就是直接将文件从工作区提交到仓库,前提是该文件已经有仓库中的历史版本,语法如下:

git commit -a -m [message]

试验一下,

github学习之旅(四)—— 工作区、暂存区、仓库区第10张

继续在abc.txt文本文件中写入内容haha,通过以上命令直接添加进本地版本库,没问题。

五、查看仓库中的所有版本记录

刚刚我们已经提交了2次了,应该有2个版本了,可以通过git log命令,查看,

git log

github学习之旅(四)—— 工作区、暂存区、仓库区第11张

 可以看到,通过这个命令,可以查看每个版本的编码、作者、版本生成的时间、版本生成时的备注说明。

但是,我们通过log命令,只是看到了一个列表,并没有详细的看到版本中的变更,如果需要查看某一个版本的详细变更,可以通过 git show 命令,语法及示例如下:

git show 版本的编号

github学习之旅(四)—— 工作区、暂存区、仓库区第12张

可以看到,+ haha字是绿色的,说明haha这些文字是新增加的,如果是红色,就是删除的。

至此,如何初始化一个本地仓库,再对这个仓库进行一些修改(包括增、删、改),接着把修改的文件放进暂存区,最后把暂存区的文件放进版本库进行记录,整个流程已经跑通,在这个过程中,可以随时通过 git status查看这个仓库中的文件状态,也可以通过git log查看版本库中的所有变更,还可以通过git show命令查看每一次版本的详细变更内容,其实,每一个命令都有复杂的参数可以配置,后续接着介绍。我们此时也没有把本地仓库与远端github仓库进行关联起来,一篇文章太长,我自己都懒得看了,分开讲。

免责声明:文章转载自《github学习之旅(四)—— 工作区、暂存区、仓库区》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇用UltrISO制作可启动iso【Cadence】layer颜色的设置下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

git 实践(三) 建立关联分支

建立分支关联关系的三种方法: 1.检出时建立: 从服务器上拉取特定分支的时候,可以建立关联关系。git checkout -b localdev origin/dev检出的分支会自动关联到该远程分支 这种使用的前提:检出的本地分支必须和远程分支同名;如:git checkout -b dev origin/dev 这时会建立关联关系但:git chec...

git日常提交冲突的处理

通常一般多人开发常见的场景,每天工作结束时提交下代码,保存下当日的工作(有些完成一半的代码可以先不传),但一般提交之前我们通常要用远程仓库的代码拉取下来,因为可能会和本地代码有冲突,此时执行 git pull , 可能就会看到下面的出错提示:     如上图,这说明本地代码中的project.config.json文件和远程仓库中的同名文件存在冲突,解决方...

git合并两个仓库的代码

首先说下背景:现在我是从公司主仓库fork到我自己的仓库中,开发完后要先将主仓库代码合并到我自己的仓库中,然后解决冲突后再提pr。主仓库:company:master我的仓库:yoyocheknow:master 合并步骤:1:将主仓库的地址添加到自己本地的远程仓库中 //git remote add 仓库名称 地址 git remote add comp...

Git学习笔记(一)

刚开始学Git,记录下来,讹误之处还望指教。 安装好git之后,有两个东东,如图: git bash 表示是命令行操作。 git GUI 表示是图形化操作。但是这个界面用起来不方便,另一个图形化操作工具是Tortoise Git,不过个人并不建议使用图形化操作界面,因为不方便在Linux和Windows之间来回切换。 好了,废话不多说,安装好之后点击...

Git-配置difftool和mergetool

git自带的difftool和mergetool使用不习惯,配置difftool和mergetool为Beyond Compare 3。 git的配置文件一般在C:Users用户名.gitconfig。我使用的MinGW Shell,git的配置文件在C:MinGWmsys1.0home用户名.gitconfig 1 [diff] 2 tool =...

GitHub怎样fork别人的代码到自己仓库并进行贡献

场景 比如说现在有一个很牛逼的项目,我们进入项目地址, 想将这个项目复制到自己的github仓库,然后你还想将 仓库中的代码拉取到本地进行修改,修改完你还要将本地的 修改后的代码推送到自己的github仓库,更甚至你还想将自己 复制过来并修改后的代码再还给原作者,请求人家让你合并。 实现 进入厉害的项目的地址,即他人的仓库中的项目,然后右边有个fork...