前言
在上一讲中,我们介绍了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中运行如下,
这里我说明一下上图中大家需要注意的两点:
- 黄色字符,显示的是当前操作所在目录,第一个目录 ~ 或 home一般表示的是默认主目录,你可以输入 cd ~ 命令,则会转回到该目录。
- (master),它一般是我们新建git仓库的时候默认的主分支的名称
git init命令,而这里也有两点我们需要清楚的:
- 第一点,执行这个命令,没有任何服务启动,因此这个行为不需要获取许可或权限。如果好奇,我们可以通过查看任务管理器来确定一下执行这个命令后,是否有新的服务启动。
- 第二点,我们创建的这个Git仓库是完全在本地的,并没有连接网络服务,也不在网络远端服务器上。
工作目录和Git仓库的区别:
mkdir命令创建工作目录GitLearn后,在该目录中创建了git仓库。因此可能会有小伙伴认为GitLearn就是git仓库,这个是错误的。GitLearn就是我们创建的一个普通的工作目录,和你平时新建文件夹创建的工作目录没有任何区别,而git仓库则表示的是我们能够进行保存版本信息的存储区域,且git软件能够通过该仓库信息追踪你的工作历史。
下图表示的是工作目录和Git仓库的区别:
因此正确的说法应该是,GitLearn是git仓库所在的文件目录。
那么git仓库到底在哪里?
.git的隐藏文件里。由于ls命令不能查看以 . 开头的文件,因此我们可以输入如下命令来查看git仓库。
ls -a .git
也可以通过如下命令查看:
cd .git
ls
里面显示文件如下图所示:
注意,这里面的文件最好不要改动,不然可能会造成你整个仓库出现问题,或者莫名文件丢失等问题。
3.2 仓库文件状态追踪
3.2.1 git status命令
git staus命令,由于我们在建立git仓库后,没有对其进行修改,而且工作目录中也没有进行新建文件之类的操作,因此会显示如下图:
然后我们尝试在工作目录下,新增一个文件。(下面的命令和在GitLearn文件夹中新建一个名为TestFile01.bat, 并在里面输入contents是一样的效果)
echo -n contents //直接在控制台输出字符串'contents'
echo -n contents > TestFile01.bat //将字符串'contents'输出到TestFile01.bat文件中
git staus命令,发现有点变化
这里显示我们有一个未追踪的文件,并建议我们使用git add 命令。
3.2.2 git add命令
git add
git add TestFile01.bat
这时候我们再输入git status查看仓库状态,发现仓库提示我们有一个文件可以被提交。显示如下图:
git add命令的操作,可以用下图简单加深理解。
3.2.3 git commit命令
git add命令使我们的git仓库知道有这么一个文件并能够追踪她是否变化了,但是我们没有生成一个时间线事件来进行记录。这里我们需用用到git commit命令来提交我们文件的变化并生成一个时间线点。
git commit -m "First commit"
输入上图的命令,我们就能将变化的文件提交,-m = message,我们能够直接输入提交内容的注释。输入命令后,显示如下图,
下面的第一个字符串[master (root-commit) 86e1a41]显示的是我们主分支(master)下的根提交文件(第一个提交的文件),以及这次提交的id(86e1a41),记住,之后我们每次提交生成的这个id都是唯一的。
再下面一行显示的是这次提交内容,这里显示一个文件改变了,新增了一个文件。
最后一行显示的是这个文件的许可模式(就我所知,有可执行和不可执行两种。就是在项目中,控制开发者有没有权限改变这个文件)。这里不展开讲,可能之后补充。
git commit做了什么
还记得在第一讲中我们提到过的暂存区(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时候,报的错误一般就是因为我们在错误的区域做了不合适的操作。