在使用 Git 时,我执行了以下步骤:
a.txt
。a.txt
此时,运行 git status 显示在
“要提交的更改”和 “未暂存进行提交的更改”中都有
a.txt
的条目。
git commit -m "..." a.txt
。现在您注意到 a.txt 已从“要提交的更改”和“未暂存进行提交的更改”中消失。
为什么会发生这种事?
a.txt
在git commit
之后从暂存区域消失是正常的,但为什么它也从“Changes not staged for commit”中消失?
我尝试了
git show HEAD:a.txt
- 结果与上一个版本相同。
这些更改“消失”是因为您提交了它们。
根据 git-commit 文档(强调我的),
可以通过多种方式指定要提交的内容: ... 3. 通过将文件列为提交命令的参数(不带 --interactive 或 --patch 开关),在这种情况下,提交将忽略索引中暂存的更改,而是记录列出的文件的当前内容(其中Git 必须已经知道);
你说你跑了
git commit -m "..." a.txt
。这会提交 a.txt
的当前状态,无论您是否进行了分阶段更改。这也解释了为什么 git show HEAD:a.txt
匹配该文件的当前状态 - 因为您提交了该文件的当前状态 - 以及为什么 a.txt
不再显示在“要提交的更改”或“尚未暂存提交的更改”中“ - 因为该文件中的每个更改都已提交。