Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Git_3 Git 文件的三种状态及其生命周期(git status,已修改modified、已暂存staged、已提交committed) #63

Open
Qingquan-Li opened this issue Oct 7, 2017 · 0 comments
Labels

Comments

@Qingquan-Li
Copy link
Owner

Git 文件的三种状态

Git 文件有三种状态:已修改( modified )、已暂存( staged )、已提交( committed )。

  • 已修改表示修改了文件,但还没保存到数据库中。
  • 已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。
  • 已提交表示数据已经安全的保存在本地数据库中。

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

status 3

工作目录、暂存区域、Git 仓库

  • 工作目录是对项目的某个版本独立提取出来的内容。 这些从 Git 仓库的压缩数据库中提取出来的文件,放在磁盘上供你使用或修改。
  • 暂存区域是一个文件,保存了下次将提交的文件列表信息,一般在 Git 仓库目录中。 有时候也被称作`‘索引’',不过一般说法还是叫暂存区域。
  • Git 仓库目录是 Git 用来保存项目的元数据和对象数据库的地方。 这是 Git 中最重要的部分,从其它计算机克隆仓库时,拷贝的就是这里的数据。

Git 基本的工作流程

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

如果 Git 目录中保存着的特定版本文件,就属于已提交状态。 如果作了修改并已放入暂存区域,就属于已暂存状态。 如果自上次取出后,作了修改但还没有放到暂存区域,就是已修改状态。


Git 文件的生命周期

工作目录下的每一个文件都不外乎这两种状态:已跟踪或未跟踪。

已跟踪(使用 git add 命令跟踪文件)的文件是指那些被纳入了版本控制的文件,在上一次快照中有它们的记录,在工作一段时间后,它们的状态可能处于未修改,已修改或已放入暂存区。
工作目录中除已跟踪文件以外的所有其它文件都属于未跟踪文件,它们既不存在于上次快照的记录中,也没有放入暂存区。
初次克隆某个仓库的时候,工作目录中的所有文件都属于已跟踪文件,并处于未修改状态。

工作目录中编辑过某些文件之后,由于自上次提交后你对它们做了修改,Git 将它们标记为已修改文件。 我们逐步将这些修改过的文件放入暂存区,然后提交所有暂存了的修改到 Git 仓库,如此反复。

使用 Git 时文件的生命周期:

lifecycle

@Qingquan-Li Qingquan-Li added the Git label Oct 7, 2017
@Qingquan-Li Qingquan-Li changed the title Git_3 Git 文件的三种状态及其生命周期 Git_3 Git 文件的三种状态及其生命周期(git add) Jun 23, 2019
@Qingquan-Li Qingquan-Li changed the title Git_3 Git 文件的三种状态及其生命周期(git add) Git_3 Git 文件的三种状态及其生命周期(已修改modified、已暂存staged、已提交committed) Jun 23, 2019
@Qingquan-Li Qingquan-Li changed the title Git_3 Git 文件的三种状态及其生命周期(已修改modified、已暂存staged、已提交committed) Git_3 Git 文件的三种状态及其生命周期(git status,已修改modified、已暂存staged、已提交committed) Jun 23, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant