1.工作原理
1.1直接记录快照,而不是差异比较
在前言中讲过,git是使用记录快照的方式存储,如下图,不再赘述。

1.2近乎所有的操作都是在本地进行
绝大多数情况,人们是在本地仓库中编辑文件,文件编辑完后连接远程仓库上传文件。
1.3三种状态
当本地文件一旦有了更新了之后,git文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)
已修改:本地文件做了修改,但是没有提交到暂缓区;
已暂存:本地文件做了修改,已提交到暂缓区,但是还没有上传到远程仓库;即对一个已经修改的文件的当前版本做了标记,使之包含到下次提交的快照中。
已提交:本地文件做了修改后,已经将文件提交到远程仓库。
相呼应的,git项目存在三个工作区域的概念:工作目录(working directory)、暂存区域(staging area)、git仓库(.git directory)

git仓库目录:用来保存的是项目的元数据和对象数据库的地方。其他人clone数据,就是从这里拷贝的数据.
工作目录:是对项目某个版本独立提取出来的数据。供本地修改。
暂缓区:是一个文件,保存在git仓库目录中,也叫做‘索引’,保存了下次要提交的文件列表信息。当本地文件有更新时,讲某个版本的快照存放到暂缓区,供下次提交使用。
2.工作流程
说了这么多,git的工作流程应该是时候出场了:
1.在工作目录中修改文件(本地磁盘)
2.提交本次版本的文件快照到暂缓区
3.将暂缓区的文件快照提交到仓库目录,永久性保存。

流程图详解说明:
1.从git的仓库克隆一个项目到本地;
2.在本地目录编辑已存在的文件/新增文件/删除文件;
3.版本快照添加到暂存区;
4.提交快照,提交之前查看更改;
5.如一切正常,更改推送到到存储库;(到此正常流程完成)
6,7.若提交有异常,如发现本地和远程存储库文件不一致,需要处理异常后再次提交,推送。
8.步骤2的补充,可以是其他人一起更改了本地库并推送到了存储库,导致自己本地和远程不一致。
网友评论