文件的Git文件状态

时间:2018-11-14 10:55:16

标签: git

根据git官方网站:File states

git的文件有4种状态。 因此,问题是:删除和移动/重命名文件的状态是什么? 当然,如果文件留在文件系统中,则在提交之后将不对其进行跟踪,但是在提交之前,该文件具有已删除状态(用于删除)。我认为删除实际上不是文件修改,而是事件。

1 个答案:

答案 0 :(得分:1)

在此图中,可以将删除或重命名视为完全类似于编辑。进行内容更改(编辑文件),更改元数据(例如设置文件可执行文件)还是删除它都没有关系,

如果您有一个提交给git的文件(在图表中,蓝绿色为“未修改”状态)并且将其删除,则您现在处于“已修改”状态。 git检测到此更改:

On branch master
Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    deleted:    foo.txt

no changes added to commit (use "git add" and/or "git commit -a")

这时,文件已从磁盘上删除,但尚未上载删除。它处于黄色的“修改”状态。要登台,您可以像运行任何其他更改一样登台,只要运行git add foo.txt

回想一下,尽管名称为git add并没有添加,但它将更改暂存为文件。在这种情况下,更改是删除操作,因此git add将进行删除操作。

(我提到这一点只是为了证明一点,实际上,运行git rm来执行文件的删除更为自然。任何一种方法都可以。)

On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    deleted:    foo.txt

此时,文件处于红色的“暂存”状态。提交此更改后,该文件将不再存在于存储库中。

[master 3b58d71] deleted
 1 file changed, 7 deletions(-)
 delete mode 100644 foo.txt

重新创建文件将以灰色的“未跟踪”状态重新开始。

On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)

    foo.txt

nothing added to commit but untracked files present (use "git add" to track)