如何从“舞台区”删除文件?

时间:2011-08-25 16:01:57

标签: git

我提交后,我想清理舞台区域。这是我做的:

git add 1.txt    ----- stage the 1.txt file
git commit -m "commit 1.txt"  ----- commit the 1.txt file
git reset HEAD 1.txt   ----- I want to clean the stage area

然后我用这个命令检查舞台区域:

git ls-files

仍然会显示1.txt。

为什么?

5 个答案:

答案 0 :(得分:5)

提交更改将清除舞台区域,您无需在提交后执行任何操作。

否则使用git reset

git add 1.txt    ----- stage the 1.txt file
git reset 1.txt    ----- remove 1.txt file from stage

另外,请使用git status代替git ls-files

答案 1 :(得分:4)

简短回答:

你的升级是干净的,一旦提交,至少是HEAD,如果不是工作目录的话。

答案很长:

您已提交文件1.txt。当您提交索引(staging)和HEAD变得相同时。当你做git reset HEAD 1.txt时,它基本上是一个noop,因为index和HEAD都有相同版本的1.txt。

git ls-files将显示1.txt,因为该文件位于您的回购邮件中。

不确定你要做什么。但是,一旦提交了文件,就可以取消对其所做的修改。对于新添加的文件,取消暂存修改与从索引中删除新添加的文件相同,从而取消暂存。但对于已经在回购邮件中的文件来说,这是不一样的。

从暂存中删除文件的理想方法是git rm --cached - 当您提交时,也会从repo中删除该文件。请记住,暂存是您提交后HEAD将会是什么的视图。

但是我觉得git rm --cached不是你想做的,因为你只想要一个干净的升级/索引。提交后它仍然是干净的(如果不是工作目录,至少是HEAD)。

答案 2 :(得分:0)

git ls-files显示您当前正在跟踪的内容。是否已提交该文件。

如果您已提交文件,则它指向实际提交指向的同一文件。如果您执行git diff --cached,那些将是您的暂存区域已更改但尚未提交的更改

“临时区域”只是HEAD在存储库中指向的内容与索引指向的内容之间的差异。它不是你刷新的物理文件。

答案 3 :(得分:-2)

临时区域混淆了很多[在那里,得到了伤疤]。

其中一个更好的解释是在git wiki常见问题解答中,为什么git rmgit add here不相反。

我使用故事板墙的可视化来发布(暂存)副本,并且需要从墙上主动删除,作为与您桌面(工作目录)的任何调整分开的操作。

在合并期间也会使用暂存区域,以避免弄乱您的个人工作区域。

答案 4 :(得分:-3)

因为git ls-files列出了git跟踪的所有文件。

你可能想要这里的git状态。