我提交后,我想清理舞台区域。这是我做的:
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。
为什么?
答案 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 rm
与git add
here不相反。
我使用故事板墙的可视化来发布(暂存)副本,并且需要从墙上主动删除,作为与您桌面(工作目录)的任何调整分开的操作。
在合并期间也会使用暂存区域,以避免弄乱您的个人工作区域。
答案 4 :(得分:-3)
因为git ls-files列出了git跟踪的所有文件。
你可能想要这里的git状态。