1

当我克隆 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)

这个目录不是空的,有一个名为sample.gif的跟踪文件img/。我尝试添加一个空文件:

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

4

1 回答 1

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,您将在此处看不到任何输出,但 img/sample.gif 将回到工作目录中。

gokmen@rodosto advimage % git st
 D img/sample.gif

img/sample.gif这表明您使用rm而不是删除git rm。此时,您可以发出git rm img/sample.gif && git commit删除文件。

于 2012-07-10T12:35:28.053 回答