git - 文件的 Git 文件状态
问题描述
git有4种文件状态。所以问题是:删除和移动/重命名文件的状态是什么?当然,如果文件留在文件系统中,那么在提交之后它将不被跟踪,但在提交之前它具有删除状态(用于删除)。我认为删除不是真正的文件修改,而是一个事件。
解决方案
您可以考虑删除或重命名,就像此图中的编辑一样。无论您是进行内容更改(编辑文件)、进行元数据更改(例如,设置文件可执行文件)还是删除它,都通过相同的工作流程。
如果您有一个提交给 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)
推荐阅读
- javascript - forEach 循环没有根据需要更新数组
- python - 按下按钮时变量加 1
- python - 如何在python中使用文件路径?
- java - 二叉树路径和问题中的递归逻辑给出错误的输出
- arrays - 你如何创建一个带有类的数组?
- python - 为什么 Python 在复制某些文件时更喜欢某些目录而忽略其他目录?
- php - 谷歌 api v3 日历 quickadd php
- google-apps-script - 任何人都可以在这个 html 中找到丢失的 )
- windows - 创建 pygamezero 游戏时 pyinstaller 失败
- python - 如何使用 Pandas 创建一个 if 语句,获取最后一行 csv 并在特定 col 处提取,如果 col 为空,检查它之前的行?