Git 是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
三种状态(states)
在 Git 里,文件有三种状态:已提交的(committed)、已修改的(modified)和暂存的(staged)。已提交的(committed)表示文件数据已安全地保存在你的本地数据里。已修改的(modified)表示你对文件做了修改, 但是还没有提交到你的数据库。暂存的(staged)表示你对当前版本内的已修改文件做了标记,但还没有提交。
这三种状态将 Git 项目分成了三个主要部分:Git 目录(Git directory)、工作目录(working directory)和暂存区(staging area)。
Git 目录(Git directory)是保存项目的元数据和基本数据的地方。这是 Git 最重要的部分,当你从另外一台电脑 clone 了一个仓库(repository)到你的电脑,实际上,你复制的就是Git 目录(Git directory)。
工作目录(working directory)是某一版本项目的检出(checkout)。这些文件是从Git 目录(Git directory)中的压缩数据里拉(pull out)出来的,放在你的硬盘上供你查看和修改。
暂存区(staging area)是一个文件,保存在你的Git 目录(Git directory)里,存储着你下一次将要提交的信息。有时也称它为 "index",但是暂存区(staging area)更通用。
基本的 Git 工作流程是这样的:
- 你在你的当前工作目录(working directory)里修改了文件。
- 你暂存了文件,添加它们的快照(snapshot)到你的暂存区(staging area)。
- 你做了一个提交的动作,将暂存区(staging area)中记录的文件快照永久地保存到Git 目录(Git directory)。
注:Git 中的快照的意思,就是当前文件的内容,最终记录的是文件版本之间的差异。
如果某一版本的文件记录在Git 目录(Git directory)中,它被认为是已提交的(committed)。如果一个文件被修改,添加到了暂存区(staging area),它是暂存的(staged)。如果该文件自上次检出后有改动,但是没有暂存,它是已修改的(modified)。