前言

   在上一讲中,我们介绍了git的命令组成和git help命令,这一讲我们介绍git中最开始的一步--创建你的Git仓库。同时我们也介绍了怎么查看你的Git仓库状态,以及提交新的状态改变。

目录

3.1 创建Git仓库

3.2 仓库文件状态追踪

  3.2.1 git status命令

  3.2.2 git add命令

  3.2.3 git commit命令

  3.3.4 git log和ls-files命令


3.1 创建Git仓库

  首先我们先了解一下什么是git仓库(Git repository),其实这就是一块特殊化的存储区域,能够追踪并记录你的工作。

  现在,我们开始创建git仓库,下面是我使用的代码,

cd e:            //进入E盘
mkdir GitLearn   //创建文件目录GitLearn
cd GitLearn      //进入文件目录GitLearn
git init         //创建Git仓库
ls               //查看当前目录下的文件

 实际在Git Bash中运行如下,

gerrit创建一个仓库 如何建立git仓库_文件目录

   这里我说明一下上图中大家需要注意的两点:

  • 黄色字符,显示的是当前操作所在目录,第一个目录 ~ 或 home一般表示的是默认主目录,你可以输入 cd ~ 命令,则会转回到该目录。
  • (master),它一般是我们新建git仓库的时候默认的主分支的名称

git init命令,而这里也有两点我们需要清楚的:

  •   第一点,执行这个命令,没有任何服务启动,因此这个行为不需要获取许可或权限。如果好奇,我们可以通过查看任务管理器来确定一下执行这个命令后,是否有新的服务启动。
  •   第二点,我们创建的这个Git仓库是完全在本地的,并没有连接网络服务,也不在网络远端服务器上。

工作目录和Git仓库的区别:

mkdir命令创建工作目录GitLearn后,在该目录中创建了git仓库。因此可能会有小伙伴认为GitLearn就是git仓库,这个是错误的。GitLearn就是我们创建的一个普通的工作目录,和你平时新建文件夹创建的工作目录没有任何区别,而git仓库则表示的是我们能够进行保存版本信息的存储区域,且git软件能够通过该仓库信息追踪你的工作历史。

  下图表示的是工作目录和Git仓库的区别:

gerrit创建一个仓库 如何建立git仓库_gerrit创建一个仓库_02

   因此正确的说法应该是,GitLearn是git仓库所在的文件目录。

    那么git仓库到底在哪里?

.git的隐藏文件里。由于ls命令不能查看以 . 开头的文件,因此我们可以输入如下命令来查看git仓库。

ls -a .git

    也可以通过如下命令查看:

cd .git
ls

  里面显示文件如下图所示:

gerrit创建一个仓库 如何建立git仓库_gerrit创建一个仓库_03

  注意,这里面的文件最好不要改动,不然可能会造成你整个仓库出现问题,或者莫名文件丢失等问题。

3.2 仓库文件状态追踪

  3.2.1 git status命令

git staus命令,由于我们在建立git仓库后,没有对其进行修改,而且工作目录中也没有进行新建文件之类的操作,因此会显示如下图:

gerrit创建一个仓库 如何建立git仓库_git仓库_04

  然后我们尝试在工作目录下,新增一个文件。(下面的命令和在GitLearn文件夹中新建一个名为TestFile01.bat, 并在里面输入contents是一样的效果)

echo -n contents   //直接在控制台输出字符串'contents'
echo -n contents > TestFile01.bat   //将字符串'contents'输出到TestFile01.bat文件中

git staus命令,发现有点变化

gerrit创建一个仓库 如何建立git仓库_gerrit创建一个仓库_05

  这里显示我们有一个未追踪的文件,并建议我们使用git add 命令。

  3.2.2 git add命令

git add

git add TestFile01.bat

  这时候我们再输入git status查看仓库状态,发现仓库提示我们有一个文件可以被提交。显示如下图:

 

gerrit创建一个仓库 如何建立git仓库_git仓库_06

git add命令的操作,可以用下图简单加深理解。

gerrit创建一个仓库 如何建立git仓库_git仓库_07

  3.2.3 git commit命令

git add命令使我们的git仓库知道有这么一个文件并能够追踪她是否变化了,但是我们没有生成一个时间线事件来进行记录。这里我们需用用到git commit命令来提交我们文件的变化并生成一个时间线点。

git commit -m "First commit"

  输入上图的命令,我们就能将变化的文件提交,-m = message,我们能够直接输入提交内容的注释。输入命令后,显示如下图,

gerrit创建一个仓库 如何建立git仓库_文件目录_08

  下面的第一个字符串[master (root-commit) 86e1a41]显示的是我们主分支(master)下的根提交文件(第一个提交的文件),以及这次提交的id(86e1a41),记住,之后我们每次提交生成的这个id都是唯一的。

  再下面一行显示的是这次提交内容,这里显示一个文件改变了,新增了一个文件。

  最后一行显示的是这个文件的许可模式(就我所知,有可执行和不可执行两种。就是在项目中,控制开发者有没有权限改变这个文件)。这里不展开讲,可能之后补充。

git commit做了什么

gerrit创建一个仓库 如何建立git仓库_git_09

  还记得在第一讲中我们提到过的暂存区(staging ara)以及图解吗?我们从git仓库中看,上面那个图是git add后,文件在git仓库暂存区,然后通过git commit命令,文件提交给版本区,git仓库就能够开始追踪提交的文件的历史了(比如查看哪里做了修改)。

  3.3.4 git log和ls-files命令

git log命令则会报错,因为我们的仓库什么都没有提交,所以根本就没有对仓库的日志文件)。输入如下命令:

git status      //查看当前git状态
git log         //查看git日志
git log  --stat //查看git日志并列出修改文件名

git config)的用户名和邮箱信息。

git ls-files    //列出在仓库中所有的文件

总结:

对于git仓库内存区域的划分和不同作用,我们会在后面详细分析,这一讲最重要的是,记住你对文件的每一步命令,使你的文件到了哪个区域。因为我们刚开始使用git时候,报的错误一般就是因为我们在错误的区域做了不合适的操作。