在上一篇的Git基础中,文末部分我们从大面上讲解了Git的整体架构组成。今天这一篇中就来详细说说本地仓库这一块的基础操作。
我们要明确的是:Git本身是运行在本地的,以一个一个的本地仓库(repository)为工作单位,互不影响。 每个本地仓库的内部架构均如图所示:
解释一下这里边的几个重要概念:
本地仓库(repository) // 实质为一个目录文件 ├── 版本库(.git目录) // 仓库初始化后添加的隐藏文件 │ └── 暂存区(stage) // Git的跟踪文件 │ └── master分支 // 最终提交的代码版本保存地 ├── 工作区(workspace) // 实际开发中的项目目录一个本地的Git仓库(repository)实质为一个文件夹。 现在我们在桌面上手动创建一个名为Git-demo的文件夹,作为我们的第一个仓库文件。
双击进入该文件夹,右键打开Git Bash窗口,使用如下命令初始化该文件:
$ git init本地仓库初始化后,出现的.git隐藏文件即为版本库。其中细分的暂存区和分支我们不需要关心,那属于Git的管理范围。
之后我们向Git-demo这个仓库文件夹内添加的任何文件都属于是工作区(workspace)的项目文件。
具体添加什么文件随意,看你心情~
添加完项目文件后,继续在Git Bash窗口内执行以下命令来查看一下当前仓库的状态:
$ git init未跟踪文件的文件名是红色的,意思是我们新添加的项目文件,还没有添加(add操作)到暂存区。
通过执行add操作,可以把新增的项目文件(未跟踪文件)添加到暂存区,来让Git持续跟进这些文件的修改情况。
add操作又具体可细分为以下三种情况:
$ git add . // 一次性全部添加 $ git add -A // 只提交修改的部分文件 $ git add xxx // 添加指定文件如果当前项目文件都是第一次创建,或者大部分的项目文件都修改过的时候,可以选择一次性把他们全部添加到暂存区。add . 就代表添加全部:
$ git add .现在我们来执行一下,然后重新查看仓库状态:
可以看到,刚才的文件名都变成了绿色的。就是说,现在Git已经在监听它们的变化了,如果我们后来修改了文件内容,就需要重新提交暂存区。
现在我们来修改一下README.md文件。简单添加了一行内容:
继续来看状态:
Git检测到了我们修改了暂存区的README.md文件。甚至我们还可以查看我们修改了什么:
$ git diff现在来使用第二种add操作 —— 只添加修改的部分文件。可以看到状态都重新变绿了。
$ git add -A我们在添加暂存区的时候,有些文件内容是相对固定的,通常不会修改。比如这里的README.md就是这样的一个文件。那么每次全部提交(add .)时,都带上一个从未修改的文件就显得很没有必要了。
所以Git中支持我们创建一个.gitignore文件,来告诉Git每次添加时你要忽略的文件列表。
在其中写上README.md的文件名即可。
这个也很简单,add后跟上文件名即可。比如新增一个文件:config.js。再执行命令,具体看动图:
$ git add config.js添加到暂存区并没有完成。还需要最后一步:从暂存区通过commit操作最终提交至分支。
简单来说一下什么是分支:
分支其实就是一个版本的历史线,按时间顺序记录着你每次提交的代码版本。
Git仓库在初始化的时候默认会创建一个master主分支。可通过以下命令来查看分支情况:
$ git branchGit Bash中貌似不能这样查看了,但是还是可以从图中的两处位置看出来:
有关分支的操作后续再说。先来看更基础的conmmit提交吧。它的命令为:
$ git conmmit -m '提交的描述信息'-m 是-message的缩写,后面必须跟上你本次的描述信息。写什么都行,类似于代码的注释,只是为了让你好区分每次提交的版本。
随着我们项目的深入,你commit的次数也会越来越多。在Git中支持查看你的提交历史(日志信息):
$ git log目前我们只提交了一次,所以只有一条日志信息。
简单分析一下其中都记录了哪些内容:
本次提交的版本号;分支信息;作者信息(姓名 邮箱); 即我们之前配置过的全局(-- global)用户信息;提交日期;提交的描述信息;提交完一个版本,我们还会继续coding,继而提交第二个,第三个直至最终版本。小结一下开发的流程:
① 工作区编辑项目文件; ② add添加到暂存区;
$ git add .③ commit提交到分支;
$ git conmmit -m '提交的描述信息'