如果我的存储库中有一个目录 app ,其中有一个未跟踪的文件,我执行git clean -f
,我收到消息:不删除app / 和未跟踪的文件仍在那里。
但是,如果我在同一目录中有一个额外的跟踪文件,并且我执行完全相同的命令,则会成功删除未跟踪的文件。
所以我的问题是:为什么Git尝试删除目录,如果从未跟踪的文件中清除它后它是空的?
下面是一个再现行为的脚本。提前谢谢。
#!/bin/bash
# Create new empty repo
mkdir myrepo && cd myrepo
git init
# Create app directory with main.c
mkdir app
touch app/main.c
# Try to delete main.c with git clean -> Not working
git clean -f
# Add helper.c to app directory and add to index
touch app/helper.c
git add app/helper.c
# Try to delete main.c with git clean -> Now it's working
git clean -f
答案 0 :(得分:6)
您需要传递-d
的{{1}}选项才能删除未跟踪的目录。
答案 1 :(得分:2)
git不跟踪目录 - 你不能将空目录提交给git。
(尝试创建一个空目录,并将其添加到git中 - 你不会看到git状态的任何变化)
即使您将一些文件添加到未跟踪的目录中,git也不会显示git status
中的所有文件 - 它只显示目录
检查this question以获取有关为什么git不版本目录的更多答案。
正如@Hasturkun在答案中指出的那样,你需要将-d
传递给git clean
以删除未跟踪的目录