5

In the diagram shown on the git-scm page, Recording Changes to a Repository, it shows that when an untracked file is added, it moves to the unmodified state.

enter image description here

Is this correct? If I run $ git add myFile then $ git status, it shows that myFile is ready to be committed, which (from my beginner's perspective) looks unintuitive when looking at the diagram on that page.

Is the diagram incorrect, incomplete, or is my understanding of the diagram incorrect? If the latter, please could someone explain what is meant.

4

3 回答 3

4

当您git add创建一个以前未跟踪的新文件时,它会立即暂存(图像中的蓝色阶段)。该图在这方面具有误导性,但该页面上的文本在Tracking New Files段落下说明了这一点。

于 2013-03-05T16:37:30.623 回答
3

你的问题的答案是肯定的。当您暂存未跟踪的文件时,它变为暂存,而不是未修改。

对我来说,这张图最困难的问题是将文件分类为:

  • 未追踪
  • 未修改
  • 修改的
  • 上演

在我看来,正确的类别是:

  • 未追踪
  • 未修改
  • 未上演的
  • 上演

文件状态的正确类别

重要的形容词用粉红色标记。灰色的是多余的。您不必说:“文件已被跟踪、修改和暂存”。说“文件已暂存”就足够了,因为每个暂存文件都被修改和跟踪。

一旦意识到这一点,就很容易理解,未跟踪的文件只能转移到暂存状态。这是通过以下方式完成的:

git add [filename]

没有进行转换的命令:

  • 未跟踪的文件 => 未修改的文件
  • 未跟踪的文件 => 未暂存的文件
于 2013-03-05T18:10:56.403 回答
3

该图形具有误导性,因为它没有清楚地指出文件和同一文件的版本之间的区别。

当您git add创建一个文件时,您正在将工作目录中的当前版本添加到Staging Area。当前版本现在被认为是分阶段并准备好提交。因为您的工作目录文件内容与 Staged 版本的相同,所以该文件被视为Unmodified。如果您此时要提交,则签入到 repo 的版本是 Staged 版本,它也恰好与您工作目录中文件的外观相匹配。

但是,假设您不是在添加文件后立即提交,而是对工作目录中的文件进行更多更改。现在,您实际上有两个版本的文件:之前的 Staged 版本,以及现在工作目录中的Modified版本。如果您此时要提交,则会签入较早的 Staged 版本,这与您的工作目录中的不同。

于 2013-03-05T17:16:56.920 回答