当我克隆advimage存储库时,img/
目录似乎未跟踪。
gokmen@rodosto advimage % git st
?? img/
gokmen@rodosto advimage % git status
# On branch develop
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# img/
nothing added to commit but untracked files present (use "git add" to track)
此目录不为空,img/
中有一个名为 sample.gif 的跟踪文件。我尝试添加
一个空文件:
gokmen@rodosto advimage % touch img/hede
gokmen@rodosto advimage % git add img/hede
gokmen@rodosto advimage % git st
A img/hede
?? img/
gokmen@rodosto advimage % rm -rf img
gokmen@rodosto advimage % git st
AD img/hede
D img/sample.gif
gokmen@rodosto advimage % git reset
Unstaged changes after reset:
M img/sample.gif
gokmen@rodosto advimage % git st
D img/sample.gif
gokmen@rodosto advimage %
git fsck --full
输出为空。为什么我无法删除img/
列表中的git status
?
答案 0 :(得分:2)
您从文件系统中删除了文件,但未从存储库的索引中删除它们。发出git rm -r img/ && git commit
以完全删除img/
目录。
发生了什么:
gokmen@rodosto advimage % rm -rf img
gokmen@rodosto advimage % git st
AD img/hede
D img/sample.gif
AD img/hede
建议您提交新文件img/hede
,然后在不使用git rm
的情况下将其删除。 D img/sample.gif
建议您在不使用img/sample.gif
的情况下删除git rm
。
gokmen@rodosto advimage % git reset
Unstaged changes after reset:
M img/sample.gif
git reset
表示git已停止跟踪img/hede
,rm -rf
命令未提交并删除该img/sample.gif
。之前仍会跟踪(并修改)git reset --hard
。如果你发布了gokmen@rodosto advimage % git st
D img/sample.gif
,你会看到没有输出,但是img / sample.gif会回到工作目录中。
img/sample.gif
这表示您使用rm
而不是git rm
删除了git rm img/sample.gif && git commit
。此时,您可以发出{{1}}来删除该文件。