面向工资编程,面向面试学习!

Git 文件状态

Git 仓库所在的文件夹中的文件大致有4种状态:未跟踪(untracked)、未修改(Unmodified)、已修改(modified)和已暂存(staged)。

  • Untracked:未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged。
  • Unmodified:文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为Modified. 如果使用git rm移出版本库, 则成为Untracked文件。
  • Modified:文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态, 使用git checkout 则丢弃修改过, 返回到unmodified状态, 这个git checkout即从库中取出文件, 覆盖当前修改。
  • Staged:暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodified状态. 执行git reset HEAD filename取消暂存, 文件状态为Modified。
Git 下文件生命周期图
Git 下文件的状态变化周期

由此引入 Git 项目的三个工作区域的概念:工作区、暂存区、Git 仓库。

  • 工作区:就是你在电脑里能看到的目录,里面是对项目的某个版本独立提取出来的内容。 这些从 Git 仓库的压缩数据库中提取出来的文件,放在磁盘上供你使用或修改。
  • 暂存区:英文叫stage, 或index。一般存放在 ".git目录下" 下的index文件(.git/index)中,,保存了下次将提交的文件列表信息,暂存区有时也被叫作索引(index)。
  • Git 仓库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的仓库。Git 仓库目录是 Git 用来保存项目的元数据和对象数据库的地方,从其它计算机克隆仓库时,拷贝的就是这里的数据。 Git 仓库有时也被叫做版本库。
工作目录、暂存区以及 Git 仓库。
工作区、暂存区以及 Git 仓库.

基本的 Git 工作流程如下:

  1. 在工作目录中修改文件。
  2. 暂存文件,将文件的快照放入暂存区。
  3. 提交更新,找到暂存区域的文件,将快照永久性存储到 Git 仓库目录。