【Git 第5课】 Git工作流

上次课中,我们创建了自己的Git仓库,并向其中添加了一个readme.txt的文件。在继续深入介绍Git的使用方法之前,有必要先来讲一讲Git的工作流。

在你自建的Git本地仓库中,有三个区域:本地目录、暂存区、HEAD。要搞清Git的工作流就要理解这三个区域的作用。

工作目录,就是受Git控制的文件夹,所有被跟踪记录的文件都包括在其中;

暂存区(index或者stage),类似一个缓存区域,临时保存你做的改动;

HEAD,指向最近一次提交后的结果。

用一个比喻来描述一下这三个区域:假设你是一个学生,你需要写一门课的作业,作业有好几张试卷和几本练习题,写好之后把作业交给老师。

你把所有作业放在桌上开始写,这里就是你的“工作目录”。当你写完一张试卷,把它放进你的书包里,它就进入了“暂存区”。等你把作业都写完了,放在书包里带到学校,全部交给了这门课的老师,他就是HEAD所指向的位置。

而对于项目中的文件来说,分为未跟踪和已跟踪两种状态。

未跟踪的文件的改动不受到Git的版本控制。而已跟踪的文件,即被纳入版本控制的文件,又分为未修改、已修改、已暂存三种状态。

当在工作目录中新加入一个文件时,它处于未跟踪状态。

一个已经被跟踪的文件,如果没有做过新的修改,就是未修改状态。一旦对其做了改动,就变成了已修改状态。

初次克隆某个仓库时,工作目录中所有文件都是已跟踪且未修改的状态。

通过 git add 命令可以将已修改的文件放入暂存区,也可以将未跟踪的文件加入跟踪,并同时放入暂存区。

git commit 命令会将暂存区中的文件提交至HEAD所指向的分支。关于分支的概念,我们后面再说。当被commit之后,暂存区的文件将回到未修改状态。

另外,也可以通过 git rm 将已经跟踪的文件从Git中移除。

再来套用前面的那个例子:作业里要交的试卷和练习题都处于已跟踪状态,那些不用交的就是未跟踪。当你写了某张试卷之后,它就变成了已修改。写完了把它放进书包,它就是已暂存。等你把它提交给老师之后,假设老师瞬间就把它批改完并发还给你,那这时对你来说,它又重新成为了未修改。

git status 命令是用来查看仓库中文件的状态。在命令行中,你的工作目录下运行此命令,可以看到输出文件状态信息。试试执行这条命令,然后修改readme.txt后再试试,看看有什么不同。下节课我们结合它来具体分析状态的变化。

#==== Crossin的编程教室 ====#

面向零基础初学者的编程课

每天5分钟,轻松学编程

回复 p 查看Python课程

回复 g 查看Pygame课程

回复 i 查看Git课程

回复 t 查看习题

回复 w 查看其他文章

原文发布于微信公众号 - Crossin的编程教室(crossincode)

原文发表时间:2013-11-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小李刀刀的专栏

[译]Laravel 5.0 之目录结构与命名空间

本文译自 Matt Stauffer 的系列文章. ---- Laravel 的主版本号之所以从 4 升到 5. 一个很重要的原因是目录结构的改变. 这个改变实...

36740
来自专栏假装我会写代码

Laravel Bash 别名

13620
来自专栏小李刀刀的专栏

[译]Laravel 5.0 之事件调度程序 (定时任务)

本文译自 Matt Stauffer 的系列文章. ---- 关于 Laravel 5.0 的事件调度程序(可以理解为定时任务),Eric Barnes 有一篇...

29840
来自专栏程序猿

Git面试常见问题

有次推送了Git的基本配置。 Git作为团队开发的利器,在面试的时候,被问到的概率很大。 基础部分--大家平时都用什么工具? 出了Git自带的命令行工具外,作为...

45350
来自专栏腾讯移动品质中心TMQ的专栏

糖大夫--测量流程性能监控自动化方案设计

糖大夫(简称)是一款血糖仪(想了解更多的同学请看这里http://tdf.qq.com/),但不止血糖仪。血糖仪终端具备触屏、联网、高准度血糖检测单元。除了终端...

23860
来自专栏数据和云

RAC一个节点自动重启问题分析

题记:在RAC数据库的故障当中,节点重启的现象很常见,在这种问题的处理当中,有一定的规律性。为了更好的说明这个问题的处理过程,保证出现该类问题的时候,能够有序的...

41950
来自专栏LinXunFeng的专栏

解决Cocoapods贼慢问题

1.1K50
来自专栏编程坑太多

『中级篇』镜像的发布(18)

15660
来自专栏微服务生态

深入讨论阻塞与非阻塞、同步与异步的区别

异步:某个事情需要10s完成。而我只需要调用某个函数告诉xxx来帮我做(然后我再干其他的事情)

9220
来自专栏编程坑太多

『中级篇』镜像的发布(18)

####具体的dockerhub如何注册,我就不解释了。今天的任务就是把自己的image push到自己的docker push里面,请看我的表演!

19570

扫码关注云+社区

领取腾讯云代金券