如何使用git clean删除.gitignore中的所有文件列表?

如何使用git clean删除.gitignore中的所有文件列表?,git,git-clean,Git,Git Clean,当使用git clean-Xn时,它显示将删除。tmp mkdir repo cd repo git init mkdir temp touch temp/in.tmp touch out.tmp echo '*tmp' > .gitignore 但是我想一起删除temp/in.tmp git clean-Xdn不起作用,但是cd到temp目录并运行git clean-Xn它显示将在.tmp中删除 所以我想知道是否有一个命令可以删除.gitignoreinclude子目录中的所有文件列表

当使用
git clean-Xn时,它显示
将删除。tmp

mkdir repo
cd repo
git init
mkdir temp
touch temp/in.tmp
touch out.tmp
echo '*tmp' > .gitignore
但是我想一起删除
temp/in.tmp

git clean-Xdn
不起作用,但是
cd
temp
目录并运行
git clean-Xn
它显示
将在.tmp中删除

所以我想知道是否有一个命令可以删除
.gitignore
include子目录中的所有文件列表,在这种情况下如何使用
git clean
remove
temp/in.tmp
out.tmp

mkdir repo
cd repo
git init
mkdir temp
touch temp/in.tmp
touch out.tmp
echo '*tmp' > .gitignore

我发现了一些奇怪的东西

temp
目录中添加一个文件并将其暂存,
git clean-Xn
似乎可以工作

$ git --version
git version 1.9.5.msysgit.1
它显示

touch temp/a.txt
git add temp/a.txt
git clean -Xn

但是为什么会这样呢?

您需要
-x
,因为您想删除被
忽略的文件。gitignore


git-clean-fdx

将成功地为您清洁一切


macsp:repo协议$git clean-fdxn
将删除。忽略
将删除out.tmp
会移除温度/
回购协议$

奇怪。docs说,从当前目录开始,通过递归删除不受版本控制的文件来清理工作树。胡乱猜测:Git只使用
-X
选项遍历索引中的目录,忽略
temp
目录(因为它最初不知道它,只有在添加文件之后)。我可以在Ubuntu上用Git2.1.4复制这个问题。你为什么不在家里问这个问题git@vger.kernel.org?但是
-x
同时删除所有未跟踪的文件确定我明白你的意思。您希望删除与.gitignore匹配的所有文件,但不要删除所有其他未跟踪的文件。我认为,由于git不跟踪空文件夹的事实,您遇到的这个问题确实是个棘手的问题。我正在开发一个名为gnore的CLI,它可以解决这个问题,还可以添加一些其他优点