如果我在我的存储库中有一个名为app的目录,其中有一个单独的未跟踪文件,并且我执行
但是,如果我在同一目录中有另一个已跟踪的文件,并执行完全相同的命令,则未跟踪的文件将被成功删除。
所以我的问题是:如果从未跟踪的文件中清除后该目录将为空,为什么Git要尝试删除该目录?
以下是可重现行为的脚本。提前感谢您。
git clean -f
,我会收到消息:Not removing 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
git-clean
默认忽略未跟踪的目录(或者说,没有跟踪文件的目录),因此它永远不会进入它们。 - Hasturkun