Git工作区和暂存区

Git和其他版本控制系统的一个不同之处就是有 暂存区 的概念。这也是Git高效率的原因。

 

1,工作区(Working Directory)

工作区就是电脑中的任意目录,比如”git命令快速入门章节”中的 /d/GitTestRepos/git003 目录就是一个工作区:

 

2,版本库(Repository)

工作区里面有一个隐藏目录 .git ,这个目录不算作工作区,而是Git的版本库

注意:千万不要去乱动 .git 目录的内容。

Git的版本库中存储了很多东西,其中最重要的就是称为 stage(或者叫idnex)的暂存区,还有Git默认创建的主分支 master,以及指向 master 的一个指针叫 HEAD(Git对象库章节会详细说明)。

前面讲解了往Git版本库中提交文件的时候,是分为两个步骤的:

1:使用 git add 命令添加文件,实际上就是把文件变更添加到 暂存区;

2:使用 git commit 命令提交,实际上就是把 暂存区 的所有内容都提交到 当前分支;

因为创建Git版本库时,系统默认创建了唯一一个master分支,所以,git commit 就是往 master 分支上提交。

可以简单理解为,将需要提交到版本库的的所有文件变更通通放到 暂存区,然后,一次性提交 暂存区 中的所有修改

 

暂存区 是Git中非常重要的概念,弄明白了暂存区,就弄明白了Git的很多操作到底干了些什么。

 

 

git diff 命令

故名思意,该命令会对选择的两个不同的根级树对象进行比较。

通常,git diff 命令进行树的比较时可以通过 提交ID,分支名或者表签名。git diff 命令使用这三种来源的组合进行如下4种基本比较:

1,git diff

会显示 工作区暂存区 之间的差异。同时会显示工作区里的变更文件,并把这个变更文件作为下一个提交暂存的候选。

2,git diff [commit]

显示 工作区给定提交之间的差异。常见的一种用法是用 HEAD 或者一个特定的分支名。

3,git diff –cached [commit]

显示 暂存区 和给定提交之间的差异。如果省略commit,则默认为 HEAD。

在 Git 1.6.1 及以后的版本可以使用同义词 –staged,更容易理解。

4,git diff [commit1] [commit2]

显示两个给定提交之间的差异。

 

发表评论