【发布时间】:2017-12-16 07:10:39
【问题描述】:
我的本地 git 存储库中有一个 README.md。本地 git repo 没有上演任何内容,工作树中也没有任何变化。见下文:
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working tree clean
然后我运行git rm --cached -- README.md,它说:
$ git rm --cached -- README.md
rm 'README.md'
根据git help rm:
--缓存
使用此选项仅从索引中取消暂存和删除路径。工作树文件,无论是否修改,都将被保留。
没有关于 README.md 的阶段性更改。所以暂存区/索引不应该包含任何内容。为什么它仍然被删除?
添加1
基于@DietrichEpp 的回答:
就 git 而言,状态存在于 3 个地方:
- 工作树
- 索引
- 回购
Git 通过比较 1 和 2 来决定 un-tracked 或 un-staged 是什么;
Git 通过比较 2 和 3 来决定 to-be-commited 是什么;
git reset 可用于更改 1 和/或 2 中的状态。
【问题讨论】:
-
更准确地说,有
HEAD提交(它应该代替你的项目#3),然后是索引(你的#2),然后是工作树(你的#1)。如果您使用git status --short,则它们是从左到右、成对比较的。索引(并且仅索引)定义了跟踪的内容。
标签: git