目录
前言
1. Git Introduction
1.1 Git Directory Git工作区域
1.2 Git Workflow
1.3 File State
归属系列:
1. Git Introduction
As you may remember from What is Git? Git doesn’t store data as a series of changesets or differences, but instead as a series of snapshots.
1.1 Git Directory Git工作区域
Git本地有四个工作区域:工作目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git仓库(Remote Directory)。文件在这四个区域之间的转换关系如下:
ID | Item | Description | |
1 | 工作区 Workspace | 平时存放代码的区域。 | |
2 | 暂存区 Stage Area | 临时存放改动,本质是文件,保存提交列表信息。 | |
3 | 本地仓库 Local Repository | 安全存放数据的区域,包含提交的所有版本的数据,HEAD指向最新放入仓库的版本。 工作区的隐藏目录<.git>即本地仓库 | |
4 | 远程仓库 Remote | 代码托管的服务器。可以理解为ICS的Git服务器。 | |
The below figure shows the relationship between Workspace, Stage Area in Local Repository and Local Repository.
1.2 Git Workflow
The workflow in Git is that:
- 在工作目录中添加、修改文件
- 暂存à将要进行管理的文件放入暂存区域
- 提交à将暂存区域的文件提交到Git本地仓库
- 推送à将本地仓库分支推送到远程服务器
The files managed in Git has three states:
- Modified 已修改
- Staged 已暂存
- Committed 已提交
1.3 File State
GIT不关心文件两个版本之间的具体差别,而是关心文件的整体是否有改变,若文件被改变,在添加提交时就生成文件新版本的快照,而判断文件整体是否改变的方法就是用:
- SHA-1算法计算文件的校验和
ID | Item | Description | |
1 | Untracked | 未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制。 通过git add 状态变为Staged. | |
2 | Unmodified | 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致。这种类型的文件有两种去处:
| |
3 | Modified | 文件已修改, 仅仅是修改, 并没有进行其他的操作。这个文件也有两个去处:
| |
4 | Staged | 暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodified状态. 执行git reset HEAD filename取消暂存,文件状态为Modified。 | |
Figure 1 Transfer relationship between four states
1.4 WorkspaceßàLocal Repository
将暂存区的内容提交到本地仓库中。每次使用git commit 命令我们都会在本地版本库生成一个40位的哈希值,这个哈希值也叫commit-id。
$ git commit [file1] [file2] ... -m [message]
引用部分
版本回退
Git系列之-工作区回滚
Git系列之Git Reset