Git系列详细介绍和操作
目录
1. Git Introduction
1.1 Git Directory Git工作区域
1.2 Git Workflow
1.3 File State
git cherry pick
版本回退
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 cherry pick
-
Git系列之git cherry pick
版本回退
- Git系列之-工作区回滚
- Git系列之Git Reset
- Git系列之Git Revert