我使用git 1.7.9.5并且我有一个目录_hashdist
,其中没有跟踪文件。这是我的.gitignore
:
*~
*.pyc
*.pyo
/opt
/bld
/db
/src
/_hashdist
/local
因此被忽略,如下所示:
$ git status --ignored
# On branch master
# Ignored files:
# (use "git add -f <file>..." to include in what will be committed)
#
# _hashdist/
nothing to commit (working directory clean)
然后我想删除它:
$ git clean -dfx
Removing _hashdist/
它正确地说它正在删除它。但事实上并没有发生:
$ git status --ignored
# On branch master
# Ignored files:
# (use "git add -f <file>..." to include in what will be committed)
#
# _hashdist/
nothing to commit (working directory clean)
或
$ ls -d _hashdist/
_hashdist/
目录仍在那里。这对我来说非常困惑,因为我一直使用git clean -dfx
来清理所有内容,这是第一次它不起作用。
答案 0 :(得分:1)
尝试使用strace来查找,发生了什么。
您应该看到类似的内容:
$ strace git clean -dfx
[...]
unlink("_hashdist/foo") = 0
getdents(3, /* 0 entries */, 32768) = 0
close(3) = 0
rmdir("_hashdist/") = 0
[...]
有unlink
调用删除文件和rmdir
调用删除目录。
在我的案例中,两者都是成功的= 0
。
也许这可能会带来一些启示。
如果rmdir成功但目录仍在那里,我能想到的唯一想法是另一个进程,它重新创建该目录。 - 但是当手动删除目录时,这应该是相同的......